home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TeX 1995 July
/
TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO
/
macros
/
tip
/
texipexp.tex
(
.txt
)
< prev
next >
Wrap
Texinfo Document
|
1993-09-15
|
183KB
|
6,295 lines
% This is the inputd format source code file in a flat version
% This file is generated based on running initex with all files
% belonging to this format. Do NOT change this file, because
% it is automatically generated directly from all the .tip
% files. The same copyright which applies to the individual .tip
% files applies to this file too, obviously
% This macro source file is from the four volume series
% \"TeX in Practice\" by Stephan von Bechtolsheim, published
% 1993 by Springer-Verlag, New York.
% Copyright 1993 Stephan von Bechtolsheim.
% No warranty or liability is assumed.
% This macro may be copied freely if no fees other than
% media cost or shipping charges are charged and as long
% as this copyright and the following source code itself
% is not changed. Please see the series for further information.
\input plain.tex
\def\InputD #1{} \def\InputDList{}
\catcode`\@ = 11
\def\NameDef #1{%
\expandafter\def\csname #1\endcsname
\def\NameEdef #1{%
\expandafter\edef\csname #1\endcsname
\def\NameGdef #1{%
\expandafter\gdef\csname #1\endcsname
\def\NameXdef #1{%
\expandafter\xdef\csname #1\endcsname
\def\NameNewDef #1{%
\if\NameDefinedConditional{#1}%
\errmessage{\string\NameNewDef: "#1" already defined.}%
\fi
\NameDef{#1}%
\def\NameReDef #1{%
\if\NameDefinedConditional{#1}%
\else
\errmessage{\string\NameReDef: "#1" never defined before.}%
\fi
\NameDef{#1}%
\def\NameUse #1{\csname #1\endcsname}
\def\NameUseFlagUndefined #1{%
\if\NameDefinedConditional{#1}%
\NameUse{#1}%
\else
\errmessage{\string\NameUseFlagUndefined: token "#1"
is undefined.}%
\fi
\newif\if@NameDefined
\def\NameDefinedConditional #1{%
TT\fi
\expandafter\ifx\csname #1\endcsname \relax
\@NameDefinedfalse
\else
\@NameDefinedtrue
\fi
\if@NameDefined
\catcode`\@ = 12
\NameDef{@InputD-namedef.tip}{}
\def\AbsoluteDimension #1#2{%
\ifdim #1 < 0pt
#2 = -#1\relax
\else
#2 = #1\relax
\fi
\NameDef{@InputD-absdimen.tip}{}
\def\AbsoluteValue #1#2{%
\ifnum #1<0
#2 = -#1\relax
\else
#2 = #1\relax
\fi
\NameDef{@InputD-absval.tip}{}
\def\DefineAcronym #1#2#3{%
\def #1{%
#2 (#3)%
\gdef#1{#2}%
}%
\NameDef{@InputD-acronym.tip}{}
\catcode`\@ = 11
\newcount\@DoLoopNesting
\@DoLoopNesting = 0
\newcount\@DoLoopLimit
\newcount\@DoLoopLimitTwo
\newcount\@DoLoopLimitThree
\def\DoLoop #1#2#3#4#5{%
\global\advance\@DoLoopNesting by 1
\ifnum\@DoLoopNesting > 3
\errmessage{\string\DoLoop: nesting beyond three levels
is not supported.}%
\fi
\ifnum #3 = 0
\errmessage{\string\DoLoop: step value (parameter 3) is 0!}%
\else
\ifcase\@DoLoopNesting
\or
\@DoLoop{#1}{#2}{#3}{#4}{#5}%
{\@DoLoopLimit}{\DoLoopBody}%
\or
\@DoLoop{#1}{#2}{#3}{#4}{#5}%
{\@DoLoopLimitTwo}{\DoLoopBodyTwo}%
\or
\@DoLoop{#1}{#2}{#3}{#4}{#5}%
{\@DoLoopLimitThree}{\DoLoopBodyThree}%
\fi
\fi
\global\advance\@DoLoopNesting by -1
\def\@DoLoop #1#2#3#4#5#6#7{%
\ifnum #3 > 0
#6 = #4%
\advance#6 by 1
#1 = #2%
\@DoLoopBodyPositive{#1}{#3}{#5}%
{#6}{#7}%
\else
#6 = #4%
\advance#6 by -1
#1 = #2%
\@DoLoopBodyNegative{#1}{#3}{#5}%
{#6}{#7}%
\fi
\@DoLoopIterate{#7}%
\def\@DoLoopBodyPositive #1#2#3#4#5{%
\def #5{%
\ifnum #1 < #4\relax
#3%
\advance #1 by #2%
}%
\def\@DoLoopBodyNegative #1#2#3#4#5{%
\def #5{%
\ifnum #1 > #4\relax
#3%
\advance #1 by #2%
}%
\def\@DoLoopIterate #1{%
#1\relax
\def\@DoLoopNext{\@DoLoopIterate{#1}}%
\else
\def\@DoLoopNext{\relax}%
\fi
\@DoLoopNext
\catcode`\@ = 12
\NameDef{@InputD-doloop.tip}{}
\catcode`\@ = 11
\newcount\AdvanceByTabStopsCount
\def\AdvanceByTabStops #1{%
\def\@MakeTabChars{}%
\DoLoop{\AdvanceByTabStopsCount}{2}{1}{#1}%
{\edef\@MakeTabChars{\@MakeTabChars&}}%
\@MakeTabChars
\catcode`\@ = 12
\NameDef{@InputD-advtabst.tip}{}
\newtoks\AfterEveryPar
\AfterEveryPar = {}
\catcode`\@ = 11
\def\SetUpAfterEveryPar{%
\def\par{%
\ifhmode
\ifinner
\else
\endgraf
\the\AfterEveryPar
\fi
\fi
}%
\catcode`\@ = 12
\NameDef{@InputD-aevpar.tip}{}
\catcode`\@ = 11
\newif\if@InRange
\def\InRangeConditional #1#2#3{%
TT\fi
\@InRangetrue
\ifnum #1<#2\relax
\@InRangefalse
\fi
\ifnum #1>#3\relax
\@InRangefalse
\fi
\if@InRange
\def\CheckRange #1#2#3#4{%
\ifnum #1 < #2\relax
\errmessage{Value \number#1 \space out of range #2..#3: #4}%
\fi
\ifnum #1>#3\relax
\errmessage{Value \number#1 \space out of range #2..#3: #4}%
\fi
\def\CheckZeroOneRange #1#2{%
\CheckRange{#1}{0}{1}{#2}%
\catcode`\@ = 12
\NameDef{@InputD-rangetst.tip}{}
\catcode`\@ = 11
\def\Sunday{0}
\def\Monday{1}
\def\Tuesday{2}
\def\Wednesday{3}
\def\Thursday{4}
\def\Friday{5}
\def\Saturday{6}
\def\ProvideDayOfWeek #1#2#3{%
\CheckRange{#1}{0}{6}%
{\string\ProvideDayOfWeek: day of week outside
of 0 .. 6 range.}%
\ifcase #1\relax
\def#3{Sunday}\or
\def#3{Monday}\or
\def#3{Tuesday}\or
\def#3{Wednesday}\or
\def#3{Thursday}\or
\def#3{Friday}\or
\def#3{Saturday}%
\fi
\ifnum #2 = 0
\else
\def\@ProvideDayOfWeek ##1##2##3##4;{%
\def#3{##1##2##3}%
}%
\expandafter\@ProvideDayOfWeek#3;%
\fi
\def\PrintDayOfWeek #1#2{%
\ProvideDayOfWeek{#1}{#2}{\@PrintDayOfWeek}%
\@PrintDayOfWeek
\catcode`\@ = 12
\NameDef{@InputD-dateofw.tip}{}
\def\CheckLegalMonth #1{%
\CheckRange{#1}{1}{12}%
{\string\CheckLegalMonth: month #1 out of range.}%
\NameDef{@InputD-legmonth.tip}{}
\def\CheckLegalYear #1{%
\ifnum #1 < \EarliestYearDate
\errmessage{\string\CheckLegalYear: year #1
< \the\EarliestYearDate\space
encountered, illegal.}%
\fi
\NameDef{@InputD-legyear.tip}{}
\catcode`\@ = 11
\newcount\@IModNCount
\newcount\@IModNCountCopy
\def\IModN #1#2#3{%
\@IModNCount = #1\relax
\@IModNCountCopy = #1\relax
\ifnum \@IModNCount < 0
\errmessage{\string\IModN: \string#1
(value \the\@IModNCount) is negative.}%
\fi
\ifnum #2< 1
\errmessage{\string\IModN: \string#2
(value #2) is negative or zero.}%
\fi
\divide\@IModNCount by #2\relax
\multiply\@IModNCount by #2\relax
#3 = \@IModNCountCopy
\advance #3by -\@IModNCount
\catcode`\@ = 12
\NameDef{@InputD-imodn.tip}{}
\catcode`\@ = 11
\newif\if@LeapYear
\def\LeapYearConditional #1{%
TT\fi
{%
\count0 = #1\relax
\IModN{\count0}{4}{\count1}%
\ifnum\count1 = 0
\global\@LeapYeartrue
\IModN{\count0}{100}{\count2}%
\IModN{\count0}{400}{\count3}%
\ifnum\count2 = 0
\global\@LeapYearfalse
\fi
\ifnum\count3 = 0
\global\@LeapYeartrue
\fi
\else
\global\@LeapYearfalse
\fi
}%
\if@LeapYear
\catcode`\@ = 12
\NameDef{@InputD-isleapyr.tip}{}
\def\NumberOfDaysInMonth #1#2#3{%
\CheckLegalYear{#1}%
\CheckLegalMonth{#2}%
\ifcase #2\relax
\or
#3 = 31
\or
#3 = 28
\if\LeapYearConditional{#1}%
#3 = 29
\fi
\or
#3 = 31
\or
#3 = 30
\or
#3 = 31
\or
#3 = 30
\or
#3 = 31
\or
#3 = 31
\or
#3 = 30
\or
#3 = 31
\or
#3 = 30
\or
#3 = 31
\fi
\NameDef{@InputD-ndaysmo.tip}{}
\catcode`\@ = 11
\newcount\@TempCheckDate
\def\CheckDate #1#2#3{%
\CheckLegalYear{#1}%
\CheckLegalMonth{#2}%
\NumberOfDaysInMonth{#1}{#2}{\@TempCheckDate}%
\CheckRange{#3}{1}{\@TempCheckDate}%
{\string\CheckDate: provided date #1-#2-#3 is illegal.}%
\catcode`\@ = 12
\NameDef{@InputD-legdate.tip}{}
\def\CopyDate #1#2#3#4#5#6{%
#4 = #1\relax
#5 = #2\relax
#6 = #3\relax
\NameDef{@InputD-copydate.tip}{}
\catcode`\@ = 11
\newcount\@TempNextDay
\def\NextDay #1#2#3#4#5#6{%
\CheckDate{#1}{#2}{#3}%
\CopyDate{#1}{#2}{#3}{#4}{#5}{#6}%
\advance #6 by 1
\NumberOfDaysInMonth{#1}{#2}{\@TempNextDay}%
\ifnum #6 > \@TempNextDay
#6 = 1
\advance #5 by 1
\ifnum #5 = 13
#5 = 1
\advance #4 by 1
\fi
\fi
\catcode`\@ = 12
\NameDef{@InputD-nextday.tip}{}
\def\NumberOfDaysInYear #1#2{%
\if\LeapYearConditional{#1}%
#2 = 366
\else
#2 = 365
\fi
\NameDef{@InputD-numdyr.tip}{}
\catcode`\@ = 11
\def\ProvideMonth #1#2#3{%
\CheckLegalMonth{#1}%
\ifcase #1\relax
\or
\def#3{January}\or
\def#3{February}\or
\def#3{March}\or
\def#3{April}\or
\def#3{May}\or
\def#3{June}\or
\def#3{July}\or
\def#3{August}\or
\def#3{September}\or
\def#3{October}\or
\def#3{November}\or
\def#3{December}%
\fi
\ifnum #2 = 1
\def\@TempProvideMonth ##1##2##3##4\@Del{%
\xdef#3{##1##2##3}%
}%
\expandafter\@TempProvideMonth#3\@Del
\fi
\def\PrintMonth #1#2{%
{%
\ProvideMonth{#1}{#2}{\@PrintMonth}%
\@PrintMonth
}%
\def\PrintCurrentMonth{%
\PrintMonth{\month}{0}%
\catcode`\@ = 12
\NameDef{@InputD-prmonth.tip}{}
\catcode`\@ = 11
\newcount\@YearTemp
\newcount\@YearTop
\newcount\@MonthTemp
\newcount\@MonthTop
\newcount\@TempAD
\def\ArbitraryDayOfWeek #1#2#3#4{%
\CheckDate{#1}{#2}{#3}%
#4 = \DayOfWeekOfEarliestDate
\@YearTop = #1\relax
\advance\@YearTop by -1
\DoLoop{\@YearTemp}{\EarliestYearDate}{1}{\@YearTop}{%
\NumberOfDaysInYear{\@YearTemp}{\@TempAD}%
\advance #4 by \@TempAD
}%
\IModN{#4}{7}{#4}%
\@MonthTop = #2\relax
\advance\@MonthTop by -1
\DoLoop{\@MonthTemp}{1}{1}{\@MonthTop}{%
\NumberOfDaysInMonth{#1}{\@MonthTemp}{\@TempAD}%
\advance #4 by \@TempAD
}%
\IModN{#4}{7}{#4}%
\advance #4 by #3\relax
\advance #4 by -1
\IModN{#4}{7}{#4}%
\catcode`\@ = 12
\NameDef{@InputD-arbday.tip}{}
\catcode`\@ = 11
\newcount\@TempEarliest
\newcount\EarliestYearDate
\EarliestYearDate = 1583
\newcount\DayOfWeekOfEarliestDate
\DayOfWeekOfEarliestDate = \Saturday
\def\VerifyInitDate{%
{%
\ArbitraryDayOfWeek{2000}{1}{1}{\@TempEarliest}%
\ifnum\@TempEarliest = \Saturday
\message{\string\VerifyInitDate: initialization
correct (initialization year:
\the\EarliestYearDate).}%
\else
\errmessage{\string\VerifyInitDate: January 1 of 2000
is a Saturday! Computation reports it is
day \the\@TempEarliest\space. Initialization error.}%
\fi
}%
\catcode`\@ = 12
\NameDef{@InputD-earliest.tip}{}
\catcode`\@ = 11
\newcount\@TempPrevDay
\def\PrevDay #1#2#3#4#5#6{%
\CheckDate{#1}{#2}{#3}%
\CopyDate{#1}{#2}{#3}{#4}{#5}{#6}%
\advance #6 by -1
\ifnum #6 = 0
\advance #5 by -1
\ifnum #5 = 0
#5 = 12
\advance #4 by -1
\fi
\NumberOfDaysInMonth{#4}{#5}{#6}%
\fi
\catcode`\@ = 12
\NameDef{@InputD-prevday.tip}{}
\catcode`\@ = 11
\def\NextMonth #1#2#3#4{%
\CheckDate{#1}{#2}{1}%
#3 = #1\relax
#4 = #2\relax
\advance #4 by 1
\ifnum #4 = 13
#4 = 1
\advance #3 by 1
\fi
\catcode`\@ = 12
\NameDef{@InputD-nextmon.tip}{}
\catcode`\@ = 11
\def\PrevMonth #1#2#3#4{%
\CheckDate{#1}{#2}{1}%
#3 = #1\relax
#4 = #2\relax
\advance #4 by -1
\ifnum #4 = 0
#4 = 12
\advance #3 by -1
\fi
\catcode`\@ = 12
\NameDef{@InputD-prevmon.tip}{}
\catcode`\@ = 11
\newcount\@LeadingZCount
\def\LeadingZ #1{%
\@LeadingZCount = #1\relax
\ifnum \@LeadingZCount < 10
0%
\fi
\the\@LeadingZCount
\catcode`\@ = 12
\NameDef{@InputD-leadingz.tip}{}
\newcount\Hour
\newcount\Minute
\def\PrintMilTime{%
\Hour = \time
\divide\Hour by 60
\Minute = \Hour
\multiply\Minute by 60
\advance\Minute by -\time
\Minute = -\Minute
\LeadingZ{\the\Hour}:\LeadingZ{\the\Minute}%
\NameDef{@InputD-pmtime.tip}{}
\def\TodayX{%
\PrintCurrentMonth~\the\day, \the\year
\newcount\TodayYCount
\def\TodayY{%
{%
\ArbitraryDayOfWeek{\year}{\month}{\day}{\TodayYCount}%
\PrintDayOfWeek{\TodayYCount}{0},
}%
\TodayX
\def\TodayZ{%
\TodayY, \PrintMilTime
\NameDef{@InputD-todayx.tip}{}
\catcode`\@ = 11
\newcount\@InitialDayOfMonth
\newcount\@MCDays
\newcount\@MonthlyCalendarBodyTemp
\def\MonthlyCalendarBody #1#2#3{%
{%
\CheckDate{#1}{#2}{1}%
\ArbitraryDayOfWeek{#1}%
{#2}{1}{\@InitialDayOfMonth}%
\gdef #3{}%
\DoLoop{\@MonthlyCalendarBodyTemp}%
{1}{1}{\@InitialDayOfMonth}%
{\xdef#3{#3&}}
\NumberOfDaysInMonth{#1}{#2}{\@MCDays}%
\DoLoop{\@MonthlyCalendarBodyTemp}{1}{1}{\@MCDays}{%
\xdef#3{#3\the\@MonthlyCalendarBodyTemp}%
\ifnum\@InitialDayOfMonth = \Saturday
\xdef#3{#3\cr}%
\else
\xdef#3{#3&}%
\fi
\advance\@InitialDayOfMonth by 1
\IModN{\@InitialDayOfMonth}{7}{\@InitialDayOfMonth}%
}%
}%
\xdef#3{#3\crcr}%
\newcount\@MonthlyCalendarCount
\def\MonthlyCalendar #1#2#3{%
{%
\MonthlyCalendarBody{#1}{#2}{\TableBody}%
\vtop{
\hsize = #3\relax
\ProvideMonth{#2}{0}{\MonthNameTemp}%
\@MonthlyCalendarCount = #1\relax
\centerline{\MyStrut\MonthNameTemp\space
\the\@MonthlyCalendarCount}%
\smallskip
\hrule
\smallskip
\tabskip = 0pt
\halign to \hsize{
% So
\hfil##\relax \tabskip = 0pt plus 1fil&
\hfil##& % Mo
\hfil##& % Tu
\hfil##& % We
\hfil##& % Th
\hfil##& % Fr
\hfil##\relax \tabskip = 0pt
\cr
\omit\hfil So\hfil&
\omit\hfil Mo\hfil&
\omit\hfil Tu\hfil&
\omit\hfil We\hfil&
\omit\hfil Th\hfil&
\omit\hfil Fr\hfil&
\omit\hfil Sa\hfil\cr
\TableBody
}%
\smallskip
\hrule
}%
}%
\catcode`\@ = 12
\NameDef{@InputD-mocal.tip}{}
\def\ThreeMonthlyCalendars #1#2#3{%
\hbox{%
\count0 = #1
\count1 = #2
\MonthlyCalendar{\count0}{\count1}{#3}%
\hskip 10pt
\NextMonth{\count0}{\count1}{\count0}{\count1}%
\MonthlyCalendar{\count0}{\count1}{#3}%
\NextMonth{\count0}{\count1}{\count0}{\count1}%
\hskip 10pt
\MonthlyCalendar{\count0}{\count1}{#3}%
}
\NameDef{@InputD-mocal3.tip}{}
\def\YearlyCalendar #1#2#3{%
\vbox{%
\dimen0 = #2\relax
\ifdim\dimen0 = 0.0pt
\dimen0 = \hsize
\fi
\dimen1 = #3\relax
\ifdim\dimen1 = 0.0pt
\dimen1 = \dimen0
\divide\dimen1 by 3
\advance\dimen1 by -5pt
\fi
\hsize = \dimen0
\centerline{\Large\bf Year #1}
\bigskip
\line{%
\MonthlyCalendar{#1}{1}{\dimen1}%
\hfil
\MonthlyCalendar{#1}{2}{\dimen1}%
\hfil
\MonthlyCalendar{#1}{3}{\dimen1}%
}%
\bigskip
\line{%
\MonthlyCalendar{#1}{4}{\dimen1}%
\hfil
\MonthlyCalendar{#1}{5}{\dimen1}%
\hfil
\MonthlyCalendar{#1}{6}{\dimen1}%
}%
\bigskip
\line{%
\MonthlyCalendar{#1}{7}{\dimen1}%
\hfil
\MonthlyCalendar{#1}{8}{\dimen1}%
\hfil
\MonthlyCalendar{#1}{9}{\dimen1}%
}%
\bigskip
\line{%
\MonthlyCalendar{#1}{10}{\dimen1}%
\hfil
\MonthlyCalendar{#1}{11}{\dimen1}%
\hfil
\MonthlyCalendar{#1}{12}{\dimen1}%
}%
}
\NameDef{@InputD-yearcal.tip}{}
\catcode`\@ = 11
\newcount\@ComputeMondayOfDateDay
\newcount\@ComputeMondayOfDateDayTwo
\def\ComputeMondayOfDate #1#2#3#4#5#6{%
#4 = #1\relax
#5 = #2\relax
#6 = #3\relax
\ArbitraryDayOfWeek{#4}{#5}{#6}{\@ComputeMondayOfDateDay}%
\ifnum\@ComputeMondayOfDateDay = \Sunday
\@ComputeMondayOfDateDay = 6
\else
\advance\@ComputeMondayOfDateDay by -1
\fi
\DoLoop{\@ComputeMondayOfDateDayTwo}
{\@ComputeMondayOfDateDay}{-1}{1}%
{\PrevDay{#4}{#5}{#6}{#4}{#5}{#6}}%
\catcode`\@ = 12
\NameDef{@InputD-mondofda.tip}{}
\catcode`\@ = 11
\newcount\@NextOrPrevWeekSameDayCount
\def\@NextOrPrevWeekSameDay #1#2#3#4#5#6#7{%
#4 = #1\relax
#5 = #2\relax
#6 = #3\relax
\DoLoop{\@NextOrPrevWeekSameDayCount}{1}{1}{7}%
{#7{#4}{#5}{#6}{#4}{#5}{#6}}%
\def\NextWeekSameDay #1#2#3#4#5#6{%
\@NextOrPrevWeekSameDay
{#1}{#2}{#3}{#4}{#5}{#6}{\NextDay}%
\def\PrevWeekSameDay #1#2#3#4#5#6{%
\@NextOrPrevWeekSameDay
{#1}{#2}{#3}{#4}{#5}{#6}{\PrevDay}%
\catcode`\@ = 12
\NameDef{@InputD-norpweek.tip}{}
\catcode`\@ = 11
\newcount\@WeekOfYearCounter
\newcount\@WeekOfYearYear
\newcount\@WeekOfYearMonth
\newcount\@WeekOfYearDay
\newcount\@WeekOfYearCopy
\def\WeekOfYear #1#2#3#4{%
\@WeekOfYearCopy = #1\relax
\ComputeMondayOfDate{#1}{#2}{#3}%
{\@WeekOfYearYear}{\@WeekOfYearMonth}{\@WeekOfYearDay}%
\def\@WeekOfYearCounter{#4}%
\@WeekOfYearCounter = 1
\@WeekOfYear
\newif\if@YearStop
\def\@WeekOfYear{%
\@YearStopfalse
\ifnum\@WeekOfYearCopy > \@WeekOfYearYear
\@YearStoptrue
\else
\ifnum\@WeekOfYearMonth = 1
\ifnum\@WeekOfYearDay = 1
\@YearStoptrue
\fi
\fi
\fi
\if@YearStop
\def\@WeekOfYearNext{\relax}%
\else
\def\@WeekOfYearNext{\@WeekOfYear}%
\expandafter\advance\@WeekOfYearCounter by 1
\PrevWeekSameDay{\@WeekOfYearYear}{\@WeekOfYearMonth}%
{\@WeekOfYearDay}%
{\@WeekOfYearYear}{\@WeekOfYearMonth}%
{\@WeekOfYearDay}%
\fi
\@WeekOfYearNext
\catcode`\@ = 12
\NameDef{@InputD-weekofyr.tip}{}
\NameDef{@InputD-alldate.tip}{}
\def\AlwaysBaselineskip{%
\lineskiplimit = -\maxdimen
\NameDef{@InputD-alwbase.tip}{}
\def\angt #1{%
\leavevmode
\hbox{$\langle$}%
{\rm #1}%
\hbox{$\rangle$}%
\NameDef{@InputD-angt.tip}{}
\newif\ifShowX
\ShowXfalse
\def\ShowX #1{%
\ifShowX
{%
\nonstopmode
\show #1%
}%
\fi
\NameDef{@InputD-showx.tip}{}
\catcode`\@ = 11
\newif\if@TestSubString
\def\SubStringConditional #1#2{%
TT\fi
\edef\@MainString{#1}%
\edef\@SubStringConditionalTemp{{#1}{#2}}%
\expandafter\@SubStringConditional\@SubStringConditionalTemp
\def\@SubStringConditional #1#2{%
\def\@TestSubS ##1#2##2\@Del{%
\def\@TestTemp{##1}%
}%
\ShowX{\@TestSubS}%
\@TestSubS #1#2\@Del
\ShowX{\@TestTemp}%
\ifx\@MainString\@TestTemp
\@TestSubStringfalse
\else
\@TestSubStringtrue
\fi
\if@TestSubString
\catcode`\@ = 12
\NameDef{@InputD-testsubs.tip}{}
\catcode`\@ = 11
\def\RecursionMacroEnd #1#2#3{%
#1\relax
\def\@RecursionMacroEndNext{#2}%
\else
\def\@RecursionMacroEndNext{#3}%
\fi
\@RecursionMacroEndNext
\catcode`\@ = 12
\NameDef{@InputD-endrec.tip}{}
\catcode`\@ = 11
\def\ReplaceSubStrings #1#2#3#4{%
\def\@ReplaceResult{#1}%
\edef\@ReplaceMain{#2}%
\edef\@ReplaceSub{#3}%
\edef\@ReplaceSubRep{#4}%
\@ReplaceSubStrings
\def\@ReplaceSubStrings{%
\RecursionMacroEnd
{\if\SubStringConditional{\@ReplaceMain}{\@ReplaceSub}}%
{\@ReplaceSubStringsDo}{\@ReplaceSubStringsDone}%
\def\@ReplaceSubStringsDoX{%
\def\@ReplaceSubStringsDoA ##1%
\def\@ReplaceSubStringsDo{%
\expandafter\@ReplaceSubStringsDoX \@ReplaceSub
##2\@EndReplaceSubStrings{%
\edef\@ReplaceMain{##1\@ReplaceSubRep ##2}%
}%
\ShowX{\@ReplaceSubStringsDoA}%
\ShowX{\@ReplaceMain}%
\expandafter\@ReplaceSubStringsDoA\@ReplaceMain
\@EndReplaceSubStrings
\ShowX{\@ReplaceMain}%
\@ReplaceSubStrings
\def\@ReplaceSubStringsDone{%
\expandafter\edef\@ReplaceResult{\@ReplaceMain}%
\catcode`\@ = 12
\NameDef{@InputD-restring.tip}{}
\catcode`\@ = 11
\def\StringsEqualConditional #1#2{%
TT\fi
\edef\@StringsEqualOneConditional{#1}%
\edef\@StringsEqualTwoConditional{#2}%
\ifx\@StringsEqualOneConditional\@StringsEqualTwoConditional
\def\EmptyStringConditional #1{%
TT\fi
\if\StringsEqualConditional{#1}{}%
\def\EmptyStringConditionalISpaces #1{%
TT\fi
\ReplaceSubStrings{\@EmptyStringConditionalISpaces}{#1}%
{ }{}%
\if\EmptyStringConditional
{\@EmptyStringConditionalISpaces}%
\catcode`\@ = 12
\NameDef{@InputD-compst.tip}{}
\catcode`\@ = 11
\def\@EmptyRefList{}
\def\EmptyListConditional #1{%
TT\fi
\ifx#1\@EmptyRefList
\newtoks\@AppendTokOne
\newtoks\@AppendTokTwo
\def\LeftAppendElement #1#2{%
\edef\@AppendTemp{\noexpand\\{#2}}%
\@AppendTokOne = \expandafter{\@AppendTemp}%
\@AppendTokTwo = \expandafter{#1}%
\edef#1{\the\@AppendTokOne \the\@AppendTokTwo}%
\def\RightAppendElement #1#2{%
\edef\@AppendTemp{\noexpand\\{#2}}%
\@AppendTokOne = \expandafter{\@AppendTemp}%
\@AppendTokTwo = \expandafter{#1}%
\edef#1{\the\@AppendTokTwo \the\@AppendTokOne}%
\def\CarOfList #1#2{%
\def\@CarTemp \\##1##2\@EndCarList{\def#2{##1}}%
\expandafter\@CarTemp#1\@EndCarList
\def\CdrOfList #1#2{%
\def\@CdrTemp \\##1##2\@EndCdrList{\def#2{##2}}%
\expandafter\@CdrTemp#1\@EndCdrList
\def\DropFirstElementOfList #1{%
\if\EmptyListConditional{#1}%
\errhelp = {\string\DropFirstElementOfList: list is
empty. No first element to drop.}%
\errmessage{\string\DropFirstElementOfList: List
\noexpand#1 is empty.}%
\else
\def\@DropFirstElementTemp \\##1##2\@EndCdrList{\def#1{##2}}%
\expandafter\@DropFirstElementTemp#1\@EndCdrList
\fi
\def\CarCarOfList #1#2{%
\let\@CarCarOfListList = #1%
\DropFirstElementOfList{\@CarCarOfListList}%
\CarOfList{\@CarCarOfListList}{#2}
\def\ForEveryListElement #1#2{%
\let\@ForEveryList = #1%
\let\@ForEveryListElementMacro = #2%
\@ForEveryListElement
\def\@ForEveryListElement{%
\if\EmptyListConditional{\@ForEveryList}%
\let\@ForEveryListElementNext = \relax
\else
\CarOfList{\@ForEveryList}{\@ForEveryListElementElement}%
\@ForEveryListElementMacro{\@ForEveryListElementElement}%
\DropFirstElementOfList{\@ForEveryList}%
\let\@ForEveryListElementNext = \@ForEveryListElement
\fi
\@ForEveryListElementNext
\newif\if@MemberList
\def\MemberOfListConditional #1#2{%
TT\fi
\@MemberListfalse
{%
\def\\##1{%
\if\StringsEqualConditional{#2}{##1}%
\global\@MemberListtrue
\fi
}%
#1%
}%
\if@MemberList
\def\ReverseList #1#2{%
\def\@ReverseListOut{}%
\ForEveryListElement{#1}{\@ReverseList}%
\let#2 = \@ReverseListOut
\def\@ReverseList #1{%
\LeftAppendElement{\@ReverseListOut}{#1}%
\def\LastElementOfList #1#2{%
\ReverseList{#1}{#1}%
\CarOfList{#1}{#2}%
\ReverseList{#1}{#1}%
\def\DropLastElementOfList #1{%
\ReverseList{#1}{#1}%
\DropFirstElementOfList{#1}%
\ReverseList{#1}{#1}%
\def\NumberOfListElements #1#2{%
\let\@NumberOfListElementsList = #1%
\def\@NumberOfListElementsCount{#2}%
\@NumberOfListElementsCount = 0
\@NumberOfListElements
\def\@NumberOfListElements{%
\if\EmptyListConditional{\@NumberOfListElementsList}%
\let\@NumberOfListElementsNext = \relax
\else
\advance\@NumberOfListElementsCount by 1
\DropFirstElementOfList{\@NumberOfListElementsList}%
\let\@NumberOfListElementsNext = \@NumberOfListElements
\fi
\@NumberOfListElementsNext
\newcount\@NumberOfListElCCount
\def\NumberOfListElementsNumConditional #1{%
0=0\fi
\NumberOfListElements{#1}{\@NumberOfListElCCount}%
\ifnum\@NumberOfListElCCount
\def\CombineTwoLists #1#2#3{%
\def\@CombineTwoLists{\def\@CombineTwoListsResult}%
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter
\expandafter\@CombineTwoLists
\expandafter\expandafter\expandafter{\expandafter#1#2}%
\let #3 = \@CombineTwoListsResult
\catcode`\@ = 12
\NameDef{@InputD-list-mac.tip}{}
\catcode`\@ = 11
\def\IndexLastElement #1#2{%
\NumberOfListElements{#1}{#2}%
\advance #2 by -1
\newcount\@ArrayIndexCheckCount
\def\ArrayIndexCheck #1#2{%
\IndexLastElement{#1}{\@ArrayIndexCheckCount}%
\ifnum\@ArrayIndexCheckCount = -1
\errmessage{\string\ArrayIndexCheck: array \string#2
is empty.}%
\else
\CheckRange{#2}{0}{\@ArrayIndexCheckCount}%
{\string\ArrayIndexCheck: index \number#2 out
of range in list \string#1}%
\fi
\newcount\@AccessArrayElementLimit
\newcount\@AccessArrayElementCount
\def\AccessArrayElement #1#2#3{%
\ArrayIndexCheck{#1}{#2}%
\let\@AccessArrayElementList = #1%
\@AccessArrayElementLimit = #2\relax
\DoLoop{\@AccessArrayElementCount}%
{1}{1}{\@AccessArrayElementLimit}%
{\DropFirstElementOfList{\@AccessArrayElementList}}%
\CarOfList{\@AccessArrayElementList}{#3}%
\newcount\@ModifyArrayElementCount
\newcount\@ModifyArrayElementLimit
\def\ModifyArrayElement #1#2#3{%
\ArrayIndexCheck{#1}{2}%
\IndexLastElement{#1}{\@ModifyArrayElementLimit}%
\let\@ModifyArrayList = #1%
\def\@ModifyArrayRet{}%
\DoLoop{\@ModifyArrayElementCount}%
{0}{1}{\@ModifyArrayElementLimit}%
{%
\CarOfList{\@ModifyArrayList}%
{\@ModifyArrayElement}%
\DropFirstElementOfList{\@ModifyArrayList}%
\ifnum\@ModifyArrayElementCount = #2\relax
\RightAppendElement{\@ModifyArrayRet}{#3}%
\else
\RightAppendElement
{\@ModifyArrayRet}%
{\@ModifyArrayElement}%
\fi
}%
\let #1 = \@ModifyArrayRet
\newcount\@InsertArrayElementCount
\newcount\@InsertArrayElementCountTwo
\def\InsertArrayElement #1#2#3{%
\ifnum\NumberOfListElementsNumConditional{#1}=0
\errmessage{\string\InsertArrayElement: empty array}%
\fi
\ifnum\NumberOfListElementsNumConditional{#1}=#2
\else
\ArrayIndexCheck{#1}{#2}%
\fi
\def\@InsertArrayElementListPre{}%
\ifnum #2>0
\@InsertArrayElementCount = #2\relax
\advance\@InsertArrayElementCount by -1
\ExtractSubArray{#1}{0}{\@InsertArrayElementCount}%
{\@InsertArrayElementListPre}%
\fi
\def\@InsertArrayElementListPost{}%
\IndexLastElement{#1}{\@InsertArrayElementCount}%
\ifnum #2 > \@InsertArrayElementCount
\else
\ExtractSubArray{#1}{#2}{\@InsertArrayElementCount}%
{\@InsertArrayElementListPost}%
\fi
\RightAppendElement{\@InsertArrayElementListPre}{#3}%
\CombineTwoLists
{\@InsertArrayElementListPre}%
{\@InsertArrayElementListPost}%
{\@InsertArrayElementListPre}%
\let #1 = \@InsertArrayElementListPre
\newcount\@DeleteArrayElementCount
\newcount\@DeleteArrayElementLimit
\def\DeleteArrayElement #1#2{%
\ArrayIndexCheck{#1}{#2}%
\let\@DeleteArrayElementList = #1%
\IndexLastElement{#1}{\@DeleteArrayElementLimit}%
\ifnum\@DeleteArrayElementLimit = -1
\errmessage{\string\DeleteArrayElement: empty array.}%
\fi
\def\@DeleteArrayElementResultList{}%
\DoLoop{\@DeleteArrayElementCount}%
{0}{1}{\@DeleteArrayElementLimit}%
{%
\CarOfList{\@DeleteArrayElementList}%
{\@DeleteArrayElement}%
\DropFirstElementOfList{\@DeleteArrayElementList}%
\ifnum\@DeleteArrayElementCount = #2\relax
\else
\RightAppendElement
{\@DeleteArrayElementResultList}%
{\@DeleteArrayElement}%
\fi
}%
\let #1=\@DeleteArrayElementResultList
\newcount\@DeleteArrayElementRangeCount
\newcount\@DeleteArrayElementRangeLimit
\def\DeleteArrayElementRange #1#2#3{%
\ArrayIndexCheck{#1}{#2}%
\ArrayIndexCheck{#1}{#3}%
\ifnum #2>#3
\errmessage{\string\DeleteArrayElementRange:
first index larger than second. Makes no
sense}%
\fi
\@DeleteArrayElementRangeLimit = #3\relax
\advance\@DeleteArrayElementRangeLimit by -#2%
\advance\@DeleteArrayElementRangeLimit by 1
\DoLoop{\@DeleteArrayElementRangeCount}{1}{1}%
{\@DeleteArrayElementRangeLimit}%
{\DropArrayElement{#1}{#2}}%
\newcount\@ShowArrayCount
\newcount\@ShowArrayLimit
\def\ShowArray #1{%
\wlog{\string\ShowArray: begin}%
\IndexLastElement{#1}{\@ShowArrayLimit}%
\ifnum\@ShowArrayLimit = -1
\wlog{** empty array **}%
\else
\DoLoop{\@ShowArrayCount}{0}{1}{\@ShowArrayLimit}{%
\AccessArrayElement{#1}{\@ShowArrayCount}%
{\@ShowArrayElement}%
\wlog{Index \the\@ShowArrayCount:
"\@ShowArrayElement"}%
}%
\fi
\wlog{\string\ShowArray: end}%
\wlog{}%
\def\@TokenToListDoneMacro{\@TokensToListDone}%
\def\TokensToTeXList #1#2{%
\def#1{}%
\def\@TokensToListName{#1}%
\@TokensToList #2\@TokensToListDone
\def\@TokensToList #1{%
\def\@TokensToListMacArgOne{#1}%
\ifx\@TokensToListMacArgOne\@TokenToListDoneMacro
\let\@TokensToListNext = \relax
\else
\expandafter\RightAppendElement\@TokensToListName{#1}%
\let\@TokensToListNext = \@TokensToList
\fi
\@TokensToListNext
\newcount\@ExtractArrayCount
\newcount\@ExtractArrayLimit
\newif\if@ExtractCopy
\def\ExtractSubArray #1#2#3#4{%
\ArrayIndexCheck{#1}{#2}%
\ArrayIndexCheck{#1}{#3}%
\ifnum #3<#2
\errmessage{\string\ExtractSubArray: first index >
second index, error}%
\fi
\def\@ExtractSubArrayResult{}%
\IndexLastElement{#1}{\@ExtractArrayLimit}%
\DoLoop{\@ExtractArrayCount}{0}{1}{\@ExtractArrayLimit}%
{%
\@ExtractCopytrue
\ifnum\@ExtractArrayCount < #2\relax
\@ExtractCopyfalse
\fi
\ifnum\@ExtractArrayCount > #3\relax
\@ExtractCopyfalse
\fi
\if@ExtractCopy
\AccessArrayElement
{#1}%
{\@ExtractArrayCount}%
{\@SubArrayElement}%
\RightAppendElement
{\@ExtractSubArrayResult}%
{\@SubArrayElement}%
\fi
}%
\let #4 = \@ExtractSubArrayResult
\catcode`\@ = 12
\NameDef{@InputD-arraymac.tip}{}
\def\ZeroBox #1{%
\wd#1 = 0pt
\ht#1 = 0pt
\dp#1 = 0pt
\def\ZeroBoxOut #1{%
\ZeroBox{#1}%
\box#1%
\NameDef{@InputD-box-zero.tip}{}
\catcode`\@ = 11
\newbox\@PrintAtPositionBox
\def\PrintAtPosition #1#2#3#4{%
\setbox\@PrintAtPositionBox = \hbox{%
\hskip #1\relax
\lower #2\hbox{%
#3%
}%
}%
#4 = \dp\@PrintAtPositionBox
\ZeroBoxOut{\@PrintAtPositionBox}%
\catcode`\@ = 12
\def\SetUpPrintAtPosition{%
\nopagenumbers
\topskip = 0pt
\offinterlineskip
\NameDef{@InputD-atpos.tip}{}
\catcode`\@ = 11
\def\NewEnvironment #1{%
\wlog{\string\NewEnvironment: new environment #1.}%
\NameNewDef{@@B-#1}{%
\bgroup
\def\@CurEnvName{#1}%
\NameUse{@Begin#1}%
}%
\NameNewDef{@@E-#1}{%
\NameUse{@End#1}%
\if\StringsEqualConditional{#1}{\@CurEnvName}%
\else
\errmessage{Ending environment: mismatch in
environment names: specified: #1,
expected: \@CurEnvName}%
\fi
\egroup
}%
\def\B #1{%
\NameUse{@@B-#1}%
\def\E #1{%
\NameUse{@@E-#1}%
\catcode`\@ = 12
\NameDef{@InputD-be-env.tip}{}
\catcode`\@ = 11
\newbox\@BulletBox
\setbox\@BulletBox =
\hbox{%
\hskip -2.3pt
\lower 2.5pt \hbox{$\bullet$}%
}
\ZeroBox{\@BulletBox}
\catcode`\@ = 12
\NameDef{@InputD-box-bul.tip}{}
\catcode`\@ = 11
\newbox\@BoxingBox
\newbox\@BaseLineLeaders
\catcode`\@ = 12
\NameDef{@InputD-box-bb.tip}{}
\newdimen\BoxRuleThickness
\BoxRuleThickness = 0.4pt
\NameDef{@InputD-box-thck.tip}{}
\catcode`\@ = 11
\newif\ifBulletAndBaseLine
\BulletAndBaseLinetrue
\def\RulesOutSide #1#2#3{%
{%
\setbox 0 = \hbox{%
\ifBulletAndBaseLine
\copy\@BulletBox
\fi
\hskip -\BoxRuleThickness
\vrule width \BoxRuleThickness height #1 depth #2%
\hskip #3%
\vrule width \BoxRuleThickness height #1 depth #2%
\dimen0 = #3%
\advance \dimen0 by 2\BoxRuleThickness
\hskip -\dimen0
\dimen2 = #1%
\advance\dimen2 by \BoxRuleThickness
\vrule width \dimen0 height \dimen2 depth -#1%
\hskip -\dimen0
\dimen2 = #2%
\advance\dimen2 by \BoxRuleThickness
\vrule width \dimen0 height -#2 depth \dimen2
}%
\ZeroBoxOut{0}%
}%
\def\RulesInSide #1#2#3{%
{%
\setbox 0 = \hbox{%
\ifBulletAndBaseLine
\copy\@BulletBox
\fi
\vrule width \BoxRuleThickness height #1 depth #2%
\hskip #3%
\hskip -\BoxRuleThickness
\hskip -\BoxRuleThickness
\vrule width \BoxRuleThickness height #1 depth #2%
\hskip -#3%
\dimen2 = #1%
\advance\dimen2 by -\BoxRuleThickness
\vrule width #3 height #1 depth -\dimen2
\hskip -#3%
\dimen2 = #2%
\advance\dimen2 by -\BoxRuleThickness
\vrule width #3 height -\dimen2 depth #2%
}%
\ZeroBoxOut{0}%
}%
\def\RulesOnSide #1#2#3{%
{%
\setbox 0 = \hbox{%
\ifBulletAndBaseLine
\copy\@BulletBox
\fi
\hskip -0.5\BoxRuleThickness
\vrule width \BoxRuleThickness height #1 depth #2%
\hskip #3%
\hskip -\BoxRuleThickness
\vrule width \BoxRuleThickness height #1 depth #2%
\hskip -#3%
\hskip -\BoxRuleThickness
\dimen0 = #3%
\advance\dimen0 by \BoxRuleThickness
\dimen2 = #1%
\advance\dimen2 by 0.5\BoxRuleThickness
\dimen4 = #1%
\advance\dimen4 by -0.5\BoxRuleThickness
\dimen4 = -\dimen4
\vrule width \dimen0 height \dimen2 depth \dimen4
\hskip -\dimen0
\dimen2 = #2%
\advance\dimen2 by -0.5\BoxRuleThickness
\dimen2 = -\dimen2
\dimen4 = #2%
\advance\dimen4 by 0.5\BoxRuleThickness
\vrule width \dimen0 height \dimen2 depth \dimen4
}%
\ZeroBoxOut{0}%
}%
\catcode`\@ = 12
\NameDef{@InputD-boxing5.tip}{}
\catcode`\@ = 11
\def\BoxingE #1{%
\hbox{%
\setbox\@BoxingBox = #1%
\setbox\@BaseLineLeaders = \hbox to \wd\@BoxingBox{%
\xleaders\hbox to 4pt{%
\hskip 1pt
\vrule depth 0.4pt height 0.4pt width 2pt
\hfil
}%
\hfil
}%
\ZeroBox{\@BaseLineLeaders}%
\ifBulletAndBaseLine
\box\@BaseLineLeaders
\fi
\RulesOnSide
{\ht\@BoxingBox}%
{\dp\@BoxingBox}%
{\wd\@BoxingBox}%
\box\@BoxingBox
}%
\catcode`\@ = 12
\NameDef{@InputD-boxing6.tip}{}
\catcode`\@ = 11
\newbox\@VcenterXBox
\newdimen\@VcenterDimen
\def\VcenterX{%
\hbox\bgroup
\mathsurround = 0pt
\futurelet\@VCenterXToken\@VCenterXA
\def\@VCenterXA{%
\ifx\@VCenterXToken\bgroup
\let\@VcenterXNext = \@VcenterXOrdinary
\else
\ifx\@VCenterXToken t%
\let\@VcenterXNext = \@VcenterXTo
\else
\let\@VcenterXNext = \@VcenterXSpread
\fi
\fi
\@VcenterXNext
\def\@VcenterXOrdinary{%
\def\@VcenterCommand{\vcenter}%
\afterassignment\@VcenterXB
\let\@VcenterDrop =
\def\@VcenterXTo to{%
\def\@VcenterCommand{to}%
\afterassignment\@VcenterXToSpread
\@VcenterDimen =
\def\@VcenterXSpread spread{%
\def\@VcenterCommand{spread}%
\afterassignment\@VcenterXToSpread
\@VcenterDimen =
\def\@VcenterXToSpread{%
\edef\@VcenterCommand{%
\vcenter\@VcenterCommand \the\@VcenterDimen
}%
\afterassignment\@VcenterXB
\let\@VcenterDrop =
\def\@VcenterXB{%
\setbox\@VcenterXBox = \hbox\bgroup
$%
\@VcenterCommand\bgroup
\aftergroup\@VcenterXC
\def\@VcenterXC{%
$%
\egroup
\box\@VcenterXBox
\egroup
\catcode`\@ = 12
\NameDef{@InputD-vcentx.tip}{}
\catcode`\@ = 11
\newdimen\@BoxRDimen
\newbox\@BoxRBox
\newcount\@BoxRNumber
\def\HboxR{%
\hbox\bgroup
\def\@WhichBox{\hbox}%
\def\@WhichBoxDimen{}%
\@BoxRaa
\def\VboxR{%
\vbox\bgroup
\def\@WhichBox{\vbox}%
\def\@WhichBoxDimen{}%
\@BoxRaa
\def\VtopR{%
\vtop\bgroup
\def\@WhichBox{\vtop}%
\def\@WhichBoxDimen{}%
\@BoxRaa
\def\VcenterXR{%
\hbox\bgroup
\def\@WhichBox{\VcenterX}%
\def\@WhichBoxDimen{}%
\@BoxRaa
\def\BoxR{%
\hbox\bgroup
\def\@WhichBox{\hbox}%
\def\@WhichBoxDimen{}%
\afterassignment\@BoxRB
\@BoxRNumber =
\def\@BoxRB{%
\HboxR{\box\@BoxRNumber}%
\egroup
\def\CopyR{%
\hbox\bgroup
\def\@WhichBox{\hbox}%
\def\@WhichBoxDimen{}%
\afterassignment\@CopyRbb
\@BoxRNumber =
\def\@CopyRbb{%
\HboxR{\copy\@BoxRNumber}%
\egroup
\def\@BoxRaa{%
\futurelet\@BoxRSymbol\@BoxRA
\def\@BoxRA{%
\ifx\@BoxRSymbol\bgroup
\let\@BoxitNext = \@BoxRb
\else
\if\@BoxRSymbol t%
\let\@BoxitNext = \@BoxRbTo
\else
\let\@BoxitNext = \@BoxRbSpread
\fi
\fi
\@BoxitNext
\def\@BoxRb{%
\afterassignment\@BoxRbTwo
\let\@BoxDrop =
\def\@BoxRbTwo{%
\setbox\@BoxRBox = \expandafter\@WhichBox\@WhichBoxDimen\bgroup
\aftergroup\@BoxRbThree
\def\@BoxRbThree{%
\BoxingE{\box\@BoxRBox}%
\egroup
\def\@BoxRbTo to{%
\def\@WhichBoxDimen{to}%
\afterassignment\@BoxRbMoreSpreadTo
\@BoxRDimen =
\def\@BoxRbSpread spread{%
\def\@WhichBoxDimen{spread}%
\afterassignment\@BoxRbMoreSpreadTo
\@BoxRDimen =
\def\@BoxRbMoreSpreadTo{%
\edef\@WhichBoxDimen{\@WhichBoxDimen \the\@BoxRDimen}%
\afterassignment\@BoxRbTwo
\let\@BoxDrop =
\catcode`\@ = 12
\NameDef{@InputD-boxing7.tip}{}
\def\BoxLarger #1#2{%
\vbox{%
\vskip #2
\hbox{%
\hskip #2%
\hbox{#1}%
\hskip #2%
}%
\vskip #2
}%
\NameDef{@InputD-box-larg.tip}{}
\def\EmptyBox #1#2#3{%
\hbox{%
\setbox 0 = \hbox{}%
\ht0 = #1%
\dp0 = #2%
\wd0 = #3%
\box 0%
}%
\NameDef{@InputD-emptybox.tip}{}
\catcode`\@ = 11
\newbox\@EmptyRuledBox
\def\EmptyRuledBox #1#2#3{%
\setbox\@EmptyRuledBox = \hbox{}%
\ht\@EmptyRuledBox = #1\relax
\dp\@EmptyRuledBox = #2\relax
\wd\@EmptyRuledBox = #3\relax
\HboxR{\box\@EmptyRuledBox}%
\catcode`\@ = 12
\NameDef{@InputD-emprubox.tip}{}
\def\EliminateRuledBoxes{%
\let\HboxR = \hbox
\let\VboxR = \vbox
\let\VtopR = \vtop
\let\VcenterXR = \VcenterX
\let\BoxR = \box
\let\CopyR = \copy
\NameDef{@InputD-boxrelim.tip}{}
\def\LineR{\HboxR to \hsize}
\def\LeftlineR #1{\LineR{#1\hss}}
\def\RightlineR #1{\LineR{\hss#1}}
\def\CenterlineR #1{\LineR{\hss#1\hss}}
\NameDef{@InputD-linesr.tip}{}
\NameDef{@InputD-box-mac.tip}{}
\catcode`\@ = 11
\newdimen\@BigLetDown
\newdimen\@BigLetDimen
\newcount\@BigLetCount
\newbox\@BigLetBox
\newdimen\BigLetSep
\BigLetSep = 2pt
\newdimen\BigLetH
\BigLetH = 2pt
\def\BigLetPar #1{%
\par
\setbox\@BigLetBox = \hbox{#1\hskip\BigLetSep}%
\setbox\@BigLetBox = \vtop{%
\dimen0 = \baselineskip
\offinterlineskip
\hbox{}
\vskip -0.7\dimen0
\box\@BigLetBox
\vbox to \BigLetH{}
}%
\@BigLetDimen = \dp\@BigLetBox
\advance\@BigLetDimen by 0.7\baselineskip
\advance\@BigLetDimen by 1.0\baselineskip
\divide\@BigLetDimen by \baselineskip
\@BigLetCount = \@BigLetDimen
\dp\@BigLetBox = 0pt
\hangafter = -\@BigLetCount
\hangindent = \wd\@BigLetBox
\noindent
\hskip -\hangindent
\box \@BigLetBox
\ignorespaces
\catcode`\@ = 12
\NameDef{@InputD-bletpar.tip}{}
\def\BoxingA #1{%
\vbox{%
\hrule
\hbox{%
\vrule
#1%
\vrule
}%
\hrule
}%
\NameDef{@InputD-boxing1.tip}{}
\def\BoxingB #1{%
\vbox{%
\hrule height \BoxRuleThickness
\hbox{%
\vrule width \BoxRuleThickness
#1%
\vrule width \BoxRuleThickness
}%
\hrule height \BoxRuleThickness
}%
\NameDef{@InputD-boxing2.tip}{}
\catcode`\@ = 11
\def\BoxingC #1{%
\vbox{%
\hrule height \BoxRuleThickness
\hbox{%
\vrule width \BoxRuleThickness
\copy\@BulletBox
#1%
\vrule width \BoxRuleThickness
}%
\hrule height \BoxRuleThickness
}%
\catcode`\@ = 12
\NameDef{@InputD-boxing3.tip}{}
\catcode`\@ = 11
\def\BoxingD #1{%
\vbox{%
\setbox\@BoxingBox = #1%
\setbox\@BaseLineLeaders = \hbox to \wd\@BoxingBox{%
\xleaders\hbox to 4pt{%
\hskip 1pt
\vrule depth 0.4pt height 0.4pt width 2pt
\hfil
}%
\hfil
}%
\ZeroBox{\@BaseLineLeaders}%
\hrule height \BoxRuleThickness
\hbox{%
\vrule width \BoxRuleThickness
\copy\@BulletBox
\box\@BaseLineLeaders
\box\@BoxingBox
\vrule width \BoxRuleThickness
}%
\hrule height \BoxRuleThickness
}%
\catcode`\@ = 12
\NameDef{@InputD-boxing4.tip}{}
\catcode`\@ = 11
\def\newcountOF{\alloc@0\count\countdef\insc@unt}
\def\newdimenOF{\alloc@1\dimen\dimendef\insc@unt}
\def\newskipOF{\alloc@2\skip\skipdef\insc@unt}
\def\newmuskipOF{\alloc@3\muskip\muskipdef\@cclvi}
\def\newboxOF{\alloc@4\box\chardef\insc@unt}
\def\newhelpOF#1#2{\newtoksOF#1#1\expandafter{\csname#2\endcsname}}
\def\newtoksOF{\alloc@5\toks\toksdef\@cclvi}
\def\newreadOF{\alloc@6\read\chardef\sixt@@n}
\def\newwriteOF{\alloc@7\write\chardef\sixt@@n}
\def\newfamOF{\alloc@8\fam\chardef\sixt@@n}
\def\newifOF#1{\count@\escapechar \escapechar\m@ne
\expandafter\expandafter\expandafter
\edef\@if#1{true}{\let\noexpand#1=\noexpand\iftrue}%
\expandafter\expandafter\expandafter
\edef\@if#1{false}{\let\noexpand#1=\noexpand\iffalse}%
\@if#1{false}\escapechar\count@} % the condition starts out false
\def\newlanguageOF{\alloc@9\language\chardef\@cclvi}
\catcode`\@ = 12
\NameDef{@InputD-newoutfr.tip}{}
\edef\FourSpaces{\space\space\space\space}
\edef\EightSpaces{\FourSpaces\FourSpaces}
\NameDef{@InputD-mspaces.tip}{}
\catcode`\@ = 11
\newcount\@BoxRQStart
\newcount\@BoxRQEnd
\newcount\@BoxRQLength
\newcount\@BoxRQCount
\newcount\@BoxRQLast
\newcount\@BoxRQFirst
\def\@LoadBRQCounters #1{%
\if\NameDefinedConditional{@BoxRQ-Start-#1}%
\@BoxRQStart = \NameUse{@BoxRQ-Start-#1}%
\@BoxRQEnd = \NameUse{@BoxRQ-End-#1}%
\@BoxRQLength= \NameUse{@BoxRQ-Length-#1}%
\@BoxRQCount = \NameUse{@BoxRQ-Count-#1}%
\@BoxRQLast = \NameUse{@BoxRQ-Last-#1}%
\@BoxRQFirst = \NameUse{@BoxRQ-First-#1}%
\else
\errmessage{\string\@LoadBRQCounters: no queue "#1".}%
\fi
\def\@RestoreBRQCounters #1{%
\NameXdef{@BoxRQ-Start-#1}{\the\@BoxRQStart}%
\NameXdef{@BoxRQ-End-#1}{\the\@BoxRQEnd}%
\NameXdef{@BoxRQ-Length-#1}{\the\@BoxRQLength}%
\NameXdef{@BoxRQ-Count-#1}{\the\@BoxRQCount}%
\NameXdef{@BoxRQ-Last-#1}{\the\@BoxRQLast}%
\NameXdef{@BoxRQ-First-#1}{\the\@BoxRQFirst}%
\newcount\@BoxRQTempA \newcount\@BoxRQTempB
\def\SetUpBoxRegisterQueue #1#2{%
\@BoxRQStart = \count14
\advance\@BoxRQStart by 1
\@BoxRQTempA = \@BoxRQStart
\DoLoop{\@BoxRQTempB}{1}{1}{#2}%
{\newboxOF\@WhoCaresBoxRegisterIndexA
\advance\@BoxRQTempA by 1 }
\advance\@BoxRQTempA by -1
\@BoxRQEnd = \@BoxRQTempA
\wlog{\string\SetUpBoxRegisterQueue: queue "#1."}%
\wlog{\EightSpaces Box registers
\the\@BoxRQStart\space through
\the\@BoxRQEnd\space allocated.}%
\wlog{\EightSpaces (#2 registers).}%
\@BoxRQCount = 0
\@BoxRQLength = #2
\@RestoreBRQCounters{#1}%
\def\AddBoxToQueue #1#2{%
\@LoadBRQCounters{#1}%
\wlog{\string\AddBoxToQueue: length: \the\@BoxRQLength,
count: \the\@BoxRQCount}%
\ifnum\@BoxRQCount = \@BoxRQLength
\errmessage{\string\AddBoxToQueue: Queue "#1" is full.}%
\else
\ifnum\@BoxRQCount = 0
\@BoxRQLast = \@BoxRQStart
\@BoxRQFirst = \@BoxRQStart
\fi
\global\setbox\@BoxRQLast = #2%
\advance\@BoxRQLast by 1
\ifnum\@BoxRQLast > \@BoxRQEnd
\@BoxRQLast = \@BoxRQStart
\fi
\advance\@BoxRQCount by 1
\@RestoreBRQCounters{#1}%
\fi
\def\CopyFirstElementFromQueue #1#2{%
\@LoadBRQCounters{#1}%
\ifnum\@BoxRQCount = 0
\errmessage{\string\CopyFirstElementFromQueue: empty "#1"}%
\else
\setbox #2 = \copy\@BoxRQFirst
\fi
\def\DropFirstBoxOfQueue #1{%
\@LoadBRQCounters{#1}%
\ifnum\@BoxRQCount = 0
\errmessage{\string\DropFirstBoxOfQueue: "#1" is empty.}%
\else
\advance\@BoxRQCount by -1
\ifnum\@BoxRQCount = 0
\else
\advance\@BoxRQFirst by 1
\ifnum\@BoxRQFirst > \@BoxRQEnd
\@BoxRQFirst = \@BoxRQStart
\fi
\fi
\fi
\@RestoreBRQCounters{#1}%
\def\EmptyBoxRegisterQueueConditional #1{%
TT\fi
\@LoadBRQCounters{#1}%
\ifnum\@BoxRQCount = 0
\catcode`\@ = 12
\NameDef{@InputD-boxrqu.tip}{}
\def\CenterlineP #1{%
\centerline{#1\unskip .}
\NameDef{@InputD-centerlp.tip}{}
\def\BeginCenter{%
\par
\begingroup
\rightskip = 1in plus 4em
\leftskip = \rightskip
\spaceskip = .3333em
\xspaceskip = .5em
\parfillskip = 0pt
\noindent
\def\EndCenter{%
\par
\endgroup
\NameDef{@InputD-centerng.tip}{}
\def\CenterOrParagraph #1{%
{%
\par
\setbox 0 = \hbox{#1}%
\ifdim\wd0 > \hsize
\noindent #1\par
\else
\centerline{\box0}%
\fi
}%
\NameDef{@InputD-centpar.tip}{}
\def\hboxE #1{%
{%
\setbox0 = \hbox{#1}%
\setbox1 = \hbox{}%
\wd1 = \wd0
\ht1 = \ht0
\dp1 = \dp0
\HboxR{\box 1}%
}%
\NameDef{@InputD-charbo.tip}{}
\catcode`\@ = 11
\newdimen\@AdvanceBoxD
\def\AdvanceBoxDimension #1#2{%
\@AdvanceBoxD = #1\relax
\advance\@AdvanceBoxD by #2\relax
#1 = \@AdvanceBoxD
\catcode`\@ = 12
\NameDef{@InputD-chboxd.tip}{}
\catcode`\@ = 11
\def\ClearBoxReg #1{%
\setbox #1 = \box\voidb@x
\catcode`\@ = 12
\NameDef{@InputD-clearb.tip}{}
\def\InitialCollectInfo{%
\gdef\Collect{}%
\InitialCollectInfo
\long\def\AddInfo #1{%
\xdef\Collect{\Collect #1}%
\NameDef{@InputD-collect.tip}{}
\newtoks\CollectTokens
\CollectTokens = {}
\def\AddInfo #1{%
\expandafter\expandafter\expandafter
\CollectTokens\expandafter{%
\the\CollectTokens #1}
\NameDef{@InputD-coltok.tip}{}
\catcode`\@ = 11
\def\MakeOther #1{\catcode `#1 = 12 }
\def\MakeActive #1{\catcode `#1 = \active\relax}
\def\MakeEolActive{\MakeActive{\^^M}}
\def\MakeTabActive{\MakeActive{\^^I}}
\def\MkOthersNoCB{%
\MakeOther{\ }%
\MakeOther{\\}%
\MakeOther{\$}%
\MakeOther{\&}%
\MakeOther{\#}%
\MakeOther{\^}\MakeOther{\^^K}%
\MakeOther{\_}\MakeOther{\^^A}%
\MakeOther{\%}%
\MakeOther{\~}%
\def\MkOthers{%
\MakeOther{\{}%
\MakeOther{\}}%
\MkOthersNoCB
{\catcode`\^^I = 11
\gdef\@TabAsLiteral{^^I}%
\catcode`\[ = 1
\catcode`\] = 2
\catcode`\{ = 12
\catcode`\} = 12
\gdef\LeftBraceText[{]
\gdef\RightBraceText[}]
\catcode`\[ = 12
\catcode`\] = 12
\def\AcuteAccentText{\'{}}
\def\AcuteAccentTt{{\tt\AcuteAccentText}}
\def\AmpersandText{\char`\&}
\def\AmpersandTt{{\tt\AmpersandText}}
\def\ApostropheText{'{}}
\def\ApostropheTt{{\tt\ApostropheText}}
\def\AtSignText{@}
\def\AtSignTt{{\tt\AtSignText}}
\catcode`| = 0
|catcode`\\ = 12
|gdef|Backslash{\}
\def\BackslashTt{{\tt\char`\\}}
\def\CaretText{\char`\^{}}
\def\CaretTt{{\tt\CaretText}}
\def\DollarSignText{\$}
\def\DollarSignTt{{\tt\DollarSignText}}
\catcode`\# = 12
\gdef\PoundSign{#}
\def\pounds{{\it\char'44 }}
\def\DoubleQuoteTt{{\tt"}}
\def\EmDashText{{}---{}}
\def\EmDashTt{{\tt\EmDashText}}
\def\EnDashText{{}--{}}
\def\EnDashTt{{\tt\EnDashText}}
\def\ExclamationPointText{!}
\def\ExclamationPointTt{{\tt\ExclamationPointText}}
\def\GreaterThanSign{>}
\def\GreaterThanSignTt{{\tt\GreaterThanSign}}
\def\HyphenText{-}
\def\HyphenTt{{\tt\HyphenText}}
\def\OpenExclamationText{>}
\def\OpenExclamationTt{{\tt\OpenExclamationText}}
\def\LeftBraceTt{{\tt\LeftBraceText}}
\def\LeftBracketText{[}
\def\LeftBracketTt{{\tt\LeftBracketText}}
\def\LeftParenthesisText{(}
\def\LeftParenthesisTt{{\tt\LeftParenthesisText}}
\def\LeftQuoteText{`{}}
\def\LeftQuoteTt{{\tt\LeftQuoteText}}
\def\LessThanSign{<}
\def\LessThanSignTt{{\tt\LessThanSign}}
\def\MinusSignText{-}
\def\MinusSignTt{{\tt\MinusSignText}}
\def\OpenQuestionText{<}
\def\OpenQuestionTt{{\tt\OpenQuestionText}}
\def\PlusSignText{+}
\def\PlusSignTt{{\tt\PlusSignText}}
\def\PercentSignText{\%}
\def\PercentSignTt{{\tt\PercentSignText}}
\catcode`\% = 12
\gdef\PercentSignPure{%}
\def\PeriodText{.}
\def\PeriodTt{{\tt\PeriodText}}
\def\PoundSignText{\#}
\def\PoundSignTt{{\tt\PoundSignText}}
\def\QuestionMarkText{?}
\def\QuestionMarkTt{{\tt\QuestionMarkText}}
\def\RightBraceTt{{\tt\RightBraceText}}
\def\RightBracketText{]}
\def\RightBracketTt{{\tt\RightBracketText}}
\def\RightQuoteText{'{}}
\def\RightQuoteTt{{\tt\RightQuoteText}}
\def\RightParenthesisText{)}
\def\RightParenthesisTt{{\tt\RightParenthesisText}}
\def\SpaceText{ }
\def\VisibleSpaceTt{{\tt\char"20}}
\def\TildeText{\char`\~{}}
\def\TildeTt{{\tt\TildeText}}
\def\UnderscoreText{\char`\_}
\def\UnderscoreTt{{\tt\UnderscoreText}}
\def\VerbControlSpace{\ }
\catcode`\@ = 12
\NameDef{@InputD-verb-bas.tip}{}
\catcode`\@ = 11
\newread\@FileExistsS
\newif\if@FileExistsAnswer
\def\FileExistsConditional #1{%
TT\fi
\openin\@FileExistsS = #1
\ifeof\@FileExistsS
\@FileExistsAnswerfalse
\else
\closein\@FileExistsS
\@FileExistsAnswertrue
\fi
\if@FileExistsAnswer
\catcode`\@ = 12
\NameDef{@InputD-fexist.tip}{}
\catcode`\@ = 11
\newcount\@CompareFilesResult
\newread\@ReadCompareOne
\newread\@ReadCompareTwo
\def\CompareFilesConditional #1#2{%
TT\fi
\if\FileExistsConditional{#1}%
\else
\errmessage{\string\CompareFilesConditional: first file "#1"
does not exist.}%
\fi
\if\FileExistsConditional{#2}%
\else
\errmessage{\string\CompareFilesConditional: second file "#2"
does not exist.}%
\fi
\global\@CompareFilesResult = 0
\begingroup
\MkOthers
\openin\@ReadCompareOne = #1
\openin\@ReadCompareTwo = #2
\@CompareFiles
\def\@CompareFiles{%
\read\@ReadCompareOne to \@CompareOneString
\read\@ReadCompareTwo to \@CompareTwoString
\ifeof\@ReadCompareOne
\ifeof\@ReadCompareOne
\global\@CompareFilesResult = 1
\else
\global\@CompareFilesResult = 2
\fi
\else
\ifeof\@ReadCompareOne
\global\@CompareFilesResult = 2
\else
\ifx\@CompareOneString\@CompareTwoString
\else
\global\@CompareFilesResult = 2
\fi
\fi
\fi
\RecursionMacroEnd
{\ifnum \@CompareFilesResult = 0\relax}%
{\@CompareFiles}{\@EndCompareFiles}%
\def\@EndCompareFiles{%
\endgroup
\closein\@ReadCompareOne
\closein\@ReadCompareTwo
\ifnum\@CompareFilesResult = 1
\catcode`\@ = 12
\NameDef{@InputD-comfiles.tip}{}
\catcode`\@ = 11
\newwrite\GenericOStream
\newif\if@GenericOStreamOpen
\@GenericOStreamOpenfalse
\def\OpenGenericOStream #1{%
\if@GenericOStreamOpen
\errmessage{\string\OpenGenericOStream: generic
output stream currently open.}%
\else
\global\@GenericOStreamOpentrue
\immediate\openout\GenericOStream = #1%
\fi
\def\CloseGenericOStream{%
\if@GenericOStreamOpen
\global\@GenericOStreamOpenfalse
\immediate\closeout\GenericOStream
\else
\errhelp{Stream not in use.}%
\errmessage{\string\CloseGenericOStream:
stream is NOT open for output.}%
\fi
\catcode`\@ = 12
\NameDef{@InputD-genostr.tip}{}
\catcode`\@ = 11
\newread\@StringsEqualConditionalCatInput
\def\StringsEqualConditionalCat #1#2{%
TT\fi
\edef\@StringsEqualOneConditionalCat{#1}%
\edef\@StringsEqualTwoConditionalCat{#2}%
\OpenGenericOStream{compst.tmp}%
\immediate\write\GenericOStream{%
\@StringsEqualOneConditionalCat{#1}%
}%
\immediate\write\GenericOStream{%
\@StringsEqualTwoConditionalCat{#1}%
}%
\CloseGenericOStream
\openin\@StringsEqualConditionalCatInput = compst.tmp
\read\@StringsEqualConditionalCatInput to
\@StringsEqualOneConditionalCatR
\read\@StringsEqualConditionalCatInput to
\@StringsEqualTwoConditionalCatR
\closein\@StringsEqualConditionalCatInput
\ifx
\@StringsEqualOneConditionalCatR
\@StringsEqualTwoConditionalCatR
\catcode`\@ = 12
\NameDef{@InputD-compstca.tip}{}
\catcode`\@ = 11
\newif\if@LetterConditional
\newcount\@LetterConditionalCounter
\def\@LetterConditional #1#2;{%
\@LetterConditionalCounter = `#1\relax
\def\LetterConditional #1{%
TT\fi
\@LetterConditionalfalse
\edef\@LetterConditionalString{#1}%
\expandafter\@LetterConditional\@LetterConditionalString ;
\if\InRangeConditional{\@LetterConditionalCounter}{`\a}{`\z}%
\@LetterConditionaltrue
\fi
\if\InRangeConditional{\@LetterConditionalCounter}{`\A}{`\Z}%
\@LetterConditionaltrue
\fi
\if@LetterConditional
\catcode`\@ = 12
\NameDef{@InputD-condltr.tip}{}
\catcode`\@ = 11
\def\@TestTrail #1 #2\@Del{%
\def\@RemTspTemp{#1}%
\def\RemTsp #1#2{%
\edef\@RemTspTempOne{#2#2 }%
\expandafter\@TestTrail\@RemTspTempOne\@Del
\if\StringsEqualConditional{#2#2}{\@RemTspTemp}%
\def#1{#2}%
\else
\edef\@RemTspTempA{\noexpand\edef\noexpand#1{\@RemTspTemp}}%
\@RemTspTempA
\fi
\def\@TestLead #1 #2\@Del{\def\@RemLspOne{#1}}
\def\RemLsp #1#2{%
\edef\@TempRemLsp{#2#2\space}%
\expandafter\@TestLead\@TempRemLsp\@Del
\if\EmptyStringConditional{\@RemLspOne}%
\expandafter\@RemLspThree #2\@Del{#1}%
\else
\def#1{#2}%
\fi
\edef\@RemLspTwo{%
\def\noexpand\@RemLspThree\space ##1\noexpand\@Del##2{%
\def##2{##1}%
}%
\@RemLspTwo
\catcode`\@ = 12
\NameDef{@InputD-remtlsp.tip}{}
\newcount\StringLengthResult
\catcode`\@ = 11
\newbox\@StringLengthBoxA
\newbox\@StringLengthBoxB
\def\StringLength #1{%
\setbox\@StringLengthBoxA = \hbox{\tt #1}%
\setbox\@StringLengthBoxB = \hbox{\tt A}%
\StringLengthResult = \wd\@StringLengthBoxA
\divide\StringLengthResult by \wd\@StringLengthBoxB
\catcode`\@ = 12
\NameDef{@InputD-strleng.tip}{}
\catcode`\@ = 11
\def\ConvertArgsToListAndAppend #1#2{%
\def\@Co{#1}%
\@ItemRec #2,\@Delimiter
\def\@ItemRec #1,{%
\RemLsp{\@ItemTemp}{#1}%
\expandafter\RightAppendElement\@Co{\@ItemTemp}%
\futurelet\@ItemRecTok\@ItemRecOne
\def\@ItemRecOne{%
\RecursionMacroEnd{\ifx\@ItemRecTok\@Delimiter}%
{\@ItemRecEnd}{\@ItemRec}%
\def\@ItemRecEnd\@Delimiter{}
\catcode`\@ = 12
\NameDef{@InputD-conval.tip}{}
\catcode`\@ = 11
\def\arabic #1{\number#1}
\def\roman #1{%
\romannumeral #1%
\def\Roman #1{%
\ifcase #1\or
I\or II\or III\or IV\or V\or
VI\or VII\or VIII\or IX\or X\or
XI\or XII\or XIII\or XIV\or XV\or
XVI\or XVII\or XVIII\or XIX\or XX\or
XXI\or XXII\or XXIII\or XXIV\or XV%
\else
\errmessage{\string\Roman: argument \number#1 out
of range, larger than 25.}%
\fi
\def\alph #1{%
\ifcase #1%
\or a\or b\or c\or d\or e\or f\or g\or h\or i%
\else
\@Morealph{#1}%
\fi
\def\@Morealph #1{%
\ifcase #1%
\or \or \or \or \or \or \or \or \or
\or j\or k\or l\or m\or n\or o\or p\or q\or r%
\or s\or t\or u\or v\or w\or x\or y\or z%
\else
\errmessage{\string\@Morealph: argument too large.}%
\fi
\def\Alph #1{%
\ifcase #1%
\or A\or B\or C\or D\or E\or F\or G\or H\or I%
\else
\@MoreAlph{#1}%
\fi
\def\@MoreAlph #1{%
\ifcase #1%
\or \or \or \or \or \or \or \or \or
\or J\or K\or L\or M\or N\or O\or P\or Q\or R%
\or S\or T\or U \or V\or W\or X\or Y\or Z%
\else
\errmessage{\string\@MoreAlph: argument too large.}%
\fi
\catcode`\@ = 12
\NameDef{@InputD-printco.tip}{}
\catcode`\@ = 11
\def\NewCounter #1#2#3#4{%
\wlog{\string\NewCounter: allocating new counter "#1."}%
\if\NameDefinedConditional{@C-#1}%
\errmessage{\string\NewCounter: counter "#1" was
allocated previously.}%
\fi
\expandafter\newcountOF\csname @C-#1\endcsname
\ReassignCounter{#1}{#2}{#3}{#4}%
\NameDef{@ResetC-#1}{}%
\def\ReassignCounter #1#2#3#4{%
\if\NameDefinedConditional{@C-#1}%
\else
\errmessage{\string\ReassignCounter: counter "#1"
not defined before.}%
\fi
\NameDef{@TheC-#1}{%
\expandafter\expandafter\expandafter#2%
\expandafter{\csname @C-#1\endcsname}%
}%
\NameDef{@TheArabicC-#1}{%
\expandafter\the\csname @C-#1\endcsname
}%
\NameDef{@PriC-#1}{#3}%
\NameDef{@RefC-#1}{#4}%
\def\TheCounter #1{%
\NameUse{@TheC-#1}%
\def\TheArabicCounter #1{%
\NameUse{@TheArabicC-#1}%
\def\PrintCounter #1{%
\NameUse{@PriC-#1}%
\def\RefCounter #1{%
\NameUse{@RefC-#1}%
\let\RefCounterTwo = \RefCounter
\def\CounterToRegister #1#2{%
#1 = \csname @C-#2\endcsname\relax
\def\AddCounterToResetList #1#2{%
{%
\def\@ResetCounter{\noexpand\@ResetCounter}%
\expandafter\xdef\csname @ResetC-#2\endcsname{%
\csname @ResetC-#2\endcsname\@ResetCounter{#1}%
}%
}%
\def\StepCounter #1{%
\global\expandafter\advance\csname @C-#1\endcsname by 1
\NameUse{@ResetC-#1}%
\def\SetCounter #1#2{%
\global\expandafter\csname @C-#1\endcsname = #2\relax
\def\AssignCounterToReg #1#2{%
#2 = \expandafter\csname @C-#1\endcsname
\relax
\def\@ResetCounter #1{%
\global\csname @C-#1\endcsname = 0
\catcode`\@ = 12
\NameDef{@InputD-counters.tip}{}
\newcount\ReturnNumberOfLinesInFile
\catcode`\@ = 11
\newcount\@CharCodeNumberOfLines
\catcode`\^^M = \active %
\gdef\@SetUpLineCounting{%
\gdef
{\global\advance\ReturnNumberOfLinesInFile by 1 }%
}%
\def\NumberOfLinesInFile #1{%
\begingroup
\global\ReturnNumberOfLinesInFile = 0
\DoLoop{\@CharCodeNumberOfLines}{0}{1}{127}%
{\catcode\@CharCodeNumberOfLines = 9 }
\@SetUpLineCounting
\catcode`\^^M = \active
\input #1
\endgroup
\ifnum\ReturnNumberOfLinesInFile = 1
\if\CompareFilesConditional{#1}{nul}%
\ReturnNumberOfLinesInFile = 0
\fi
\fi
\catcode`\@ = 12
\NameDef{@InputD-countl.tip}{}
\def\CenterRightLines #1#2{
\setbox 0 = \hbox{#1}
\dimen0 = \hsize
\advance\dimen0 by -\wd0
\divide\dimen0 by 2
\rightline{#1\hskip\dimen0}
\rightline{#2\hskip\dimen0}
\NameDef{@InputD-crline.tip}{}
\catcode`\@ = 11
\newcount\@CreateArrayCount
\def\CCreateArray #1#2#3{%
\NameEdef{#1-low}{\number#2}%
\NameEdef{#1-high}{#3}%
\ifnum #3<#2
\errmessage{\string\CCreateArray: low array boundary
\number#2 is larger than upper array boundary
\number#3}%
\fi
\DoLoop{\@CreateArrayCount}{#2}{1}{#3}{%
\NameDef{#1-\the\@CreateArrayCount}{}%
}
\newcount\@ConvertStringIntoArrayLength
\newcount\@ConvertStringIntoArrayCount
\def\ConvertStringIntoArray #1#2{%
\def\@ConvertArrayName{#1}%
\edef\@ConvertArrayString{#2}%
\StringLength{\@ConvertArrayString}%
\@ConvertStringIntoArrayLength = \StringLengthResult
\advance\@ConvertStringIntoArrayLength by -1
\CCreateArray{\@ConvertArrayName}%
{0}{\the\@ConvertStringIntoArrayLength}%
\@ConvertStringIntoArrayCount = 0
\expandafter\@ConvertStringIntoArray
\@ConvertArrayString\@ConvertEnd
\def\@ConvertStringIntoArray #1#2\@ConvertEnd{%
\CLoadArrayElementEdef{\@ConvertArrayName}%
{\the\@ConvertStringIntoArrayCount}{#1}%
\if\EmptyStringConditional{#2}%
\def\@ConvertStringIntoArrayNext{}%
\else
\advance\@ConvertStringIntoArrayCount by 1\relax
\def\@ConvertStringIntoArrayNext{%
\@ConvertStringIntoArray #2\@ConvertEnd%
}%
\fi
\@ConvertStringIntoArrayNext
\def\CCheckIndex #1#2{%
\expandafter\ifx\csname #1-low\endcsname\relax
\errmessage{\string\CCheckIndex: no array #1.}%
\fi
\ifnum #2<\NameUse{#1-low}%
\errmessage{Index #2 for array #1 too small.}%
\fi
\ifnum #2>\NameUse{#1-high}%
\errmessage{Index #2 for array #1 too large.}%
\fi
\def\CArrayAccess #1#2#3{%
\CCheckIndex{#1}{#2}%
\edef#3{\NameUse{#1-#2}}%
\newcount\@CArrayAccessIntervalCount
\def\CArrayAccessInterval #1#2#3#4{%
\CCheckIndex{#1}{#2}%
\CCheckIndex{#1}{#3}%
\ifnum #2>#3\relax
\errmessage{\string\CArrayAccessInterval: low index
(\PoundSignText 2) > high index
(PoundSignText 3).}%
\fi
\def#4{}%
\DoLoop
{\@CArrayAccessIntervalCount}{#2}{1}{#3}{%
\CArrayAccess{#1}{\the\@CArrayAccessIntervalCount}%
{\@CArrayAccessInterval}%
\edef#4{#4\@CArrayAccessInterval}%
}%
\def\CLoadArrayElement #1#2#3{%
\CCheckIndex{#1}{#2}%
\NameDef{#1-#2}{#3}%
\def\CLoadArrayElementEdef #1#2#3{%
\CCheckIndex{#1}{#2}%
\NameEdef{#1-#2}{#3}%
\newcount\@CShowArrayCount
\def\CShowArray #1{%
\DoLoop
{\@CShowArrayCount}%
{\NameUse{#1-low}}%
{1}%
{\NameUse{#1-high}}%
{\wlog{Index \the\@CShowArrayCount:
\NameUse{#1-\the\@CShowArrayCount}}}%
\catcode`\@ = 12
\NameDef{@InputD-csar.tip}{}
\newcount\BackslashCharCode
\BackslashCharCode = `\\
\edef\mac #1{%
{%
\noexpand\tt
\char\the\BackslashCharCode\space
#1%
}%
\NameDef{@InputD-cssprint.tip}{}
\def\CSToString #1#2{%
{%
\escapechar = -1
\xdef#1{\string #2}%
}%
\NameDef{@InputD-cstostr.tip}{}
\catcode`\@ = 11
\newread\@CatIn
\def\CSToStringCat #1#2{%
{%
\escapechar = -1
\OpenGenericOStream{cstostrc.tmp}%
\immediate\write\GenericOStream{\string#2\%}%
\CloseGenericOStream
\openin\@CatIn = cstostrc.tmp
\global\read\@CatIn to #1%
\closein\@CatIn
}%
\catcode`\@ = 12
\NameDef{@InputD-cstostrc.tip}{}
\catcode`\@ = 11
\newif\if@ControlSequenceConditional
\def\ControlSequenceConditional #1{%
TT\fi
{%
\escapechar = -1
\xdef\@ControlSequenceConditionalOne{\string#1}%
\escapechar = `:\relax
\xdef\@ControlSequenceConditionalTwo{\string#1}%
}%
\ifx\@ControlSequenceConditionalOne
\@ControlSequenceConditionalTwo
\@ControlSequenceConditionalfalse
\else
\@ControlSequenceConditionaltrue
\fi
\if@ControlSequenceConditional
\catcode`\@ = 12
\NameDef{@InputD-ctestcs.tip}{}
\catcode`\@ = 11
\long\def\DoLongFutureLet #1#2#3#4{%
\def\@FutureLetDecide{%
#1#2\@FutureLetToken
\def\@FutureLetNext{#3}%
\else
\def\@FutureLetNext{#4}%
\fi
\@FutureLetNext
}%
\futurelet\@FutureLetToken\@FutureLetDecide
\def\DoFutureLet #1#2#3#4{\DoLongFutureLet{#1}{#2}{#3}{#4}}
\catcode`\@ = 12
\NameDef{@InputD-futlet.tip}{}
\catcode`\@ = 11
\def\DblArg #1{%
\def\@DblArgTemp{#1}%
\DoFutureLet{\ifx}{[}{\@DblArgTemp}{\@DblArgB}%
\def\@DblArgB #1{\@DblArgTemp[#1]{#1}}
\catcode`\@ = 12
\NameDef{@InputD-dblarg.tip}{}
\catcode`\@ = 11
\def\GobbleDoMore #1#2{%
\def\@GobbleDoMore ##1#1{}%
\expandafter#2\@GobbleDoMore
\catcode`\@ = 12
\NameDef{@InputD-gobblemo.tip}{}
\catcode`\@ = 11
\def\DefaultArg #1#2#3{%
\def\@DefaultArgMacro{#1}%
\edef\@EmptyOtherArg{#2}%
\edef\@DefaultArgDefault{#3}%
\@DefaultArg #2\@DefaultArgEnd
\def\@DefaultArg{%
\futurelet\@DefaultArgSymbol\@DefaultArgOne
\def\@DefaultArgOne{%
\ifx\@DefaultArgSymbol\@DefaultArgEnd
\expandafter\edef\@DefaultArgMacro{\@DefaultArgDefault}%
\else
\expandafter\edef\@DefaultArgMacro{\@EmptyOtherArg}%
\fi
\GobbleDoMore{\@DefaultArgEnd}{\relax}%
\catcode`\@ = 12
\NameDef{@InputD-defauarg.tip}{}
\def\DicEntry #1{%
\par
\hangafter = 1
\hangindent = 5pt
\noindent
{\bf #1}%
\mark{#1}%
\hskip 1em plus .2em minus .2em
\ignorespaces
\NameDef{@InputD-dicentry.tip}{}
\catcode`\@ = 11
\newif\if@PrefixResult
\newcount\@LengthPrefixString
\newcount\@LengthMainString
\def\PrefixConditional #1#2{%
TT\fi
\StringLength{#1}%
\@LengthMainString = \StringLengthResult
\StringLength{#2}%
\@LengthPrefixString = \StringLengthResult
\ifnum\@LengthMainString < \@LengthPrefixString
\@PrefixResultfalse
\else
\@PrefixConditionalTwo{#1}{#2}%
\fi
\if@PrefixResult
\def\@PrefixConditionalTwo #1#2{%
\edef\@PrefixBoth{#1#2}%
\edef\@PrefixTemp{%
\def\noexpand\@TestPrefix ####1#2####2\noexpand\@Del{%
\noexpand\if\noexpand\EmptyStringConditional{####1}%
}%
}%
\ShowX\@PrefixTemp
\@PrefixTemp
\ShowX{\@TestPrefix}%
\expandafter\@TestPrefix\@PrefixBoth\@Del
\@PrefixResulttrue
\else
\@PrefixResultfalse
\fi
\catcode`\@ = 12
\NameDef{@InputD-isprefix.tip}{}
\catcode`\@ = 11
\def\DropPrefix #1#2#3{%
\if\PrefixConditional{#1}{#2}%
\edef\@PrefixConditionalTemp{%
\def\noexpand\@PrefixConditionalTempTwo #2####1%
\noexpand\@Del{%
\def\noexpand #3{####1}}%
}%
\@PrefixConditionalTemp
\ShowX{\@PrefixConditionalTemp}%
\expandafter\@PrefixConditionalTempTwo #1\@Del
\else
\wlog{\string\DropPrefix: "#2" is NOT a prefix of "#1"}%
\edef#3{#1}%
\fi
\catcode`\@ = 12
\NameDef{@InputD-droppre.tip}{}
\catcode`\p = 12
\catcode`\t = 12
\NameGdef{DropPoints}#1pt{\NameGdef{DropPointsResult}{#1}}
\NameDef{@InputD-droppt.tip}{}
\def\DumpOneReg #1{%
\wlog{Parameter "\string#1", value = \the#1}%
\def\DumpAllRegs{%
\wlog{\string\DumpAllRegs: Counter parameters first.}%
\DumpOneReg{\time}%
\DumpOneReg{\day}%
\DumpOneReg{\month}%
\DumpOneReg{\year}%
\DumpOneReg{\pretolerance}%
\DumpOneReg{\tolerance}%
\DumpOneReg{\doublehyphendemerits}%
\DumpOneReg{\finalhyphendemerits}%
\DumpOneReg{\adjdemerits}%
\DumpOneReg{\linepenalty}%
\DumpOneReg{\looseness}%
\DumpOneReg{\linepenalty}%
\DumpOneReg{\hyphenpenalty}%
\DumpOneReg{\exhyphenpenalty}%
\DumpOneReg{\binoppenalty}%
\DumpOneReg{\relpenalty}%
\DumpOneReg{\clubpenalty}%
\DumpOneReg{\widowpenalty}%
\DumpOneReg{\displaywidowpenalty}%
\DumpOneReg{\brokenpenalty}%
\DumpOneReg{\predisplaypenalty}%
\DumpOneReg{\postdisplaypenalty}%
\DumpOneReg{\interlinepenalty}%
\DumpOneReg{\floatingpenalty}%
\DumpOneReg{\outputpenalty}%
\DumpOneReg{\pausing}%
\DumpOneReg{\tracingonline}%
\DumpOneReg{\tracinglostchars}%
\DumpOneReg{\tracingmacros}%
\DumpOneReg{\tracingstats}%
\DumpOneReg{\tracingparagraphs}%
\DumpOneReg{\tracingpages}%
\DumpOneReg{\tracingoutput}%
\DumpOneReg{\tracingcommands}%
\DumpOneReg{\tracingrestores}%
\DumpOneReg{\mag}%
\DumpOneReg{\uchyph}%
\DumpOneReg{\lefthyphenmin}%
\DumpOneReg{\righthyphenmin}%
\DumpOneReg{\defaultskewchar}%
\DumpOneReg{\escapechar}%
\DumpOneReg{\endlinechar}%
\DumpOneReg{\newlinechar}%
\DumpOneReg{\fam}%
\DumpOneReg{\hbadness}%
\DumpOneReg{\vbadness}%
\DumpOneReg{\badness}%
\DumpOneReg{\showboxdepth}%
\DumpOneReg{\showboxbreadth}%
\DumpOneReg{\deadcycles}%
\DumpOneReg{\maxdeadcycles}%
\DumpOneReg{\holdinginserts}%
\DumpOneReg{\hangafter}%
\DumpOneReg{\globaldefs}%
\DumpOneReg{\delimiterfactor}%
\DumpOneReg{\inputlineno}%
\DumpOneReg{\language}%
\wlog{\string\DumpAllRegs: Dimension parameters next.}%
\DumpOneReg{\hfuzz}%
\DumpOneReg{\vfuzz}%
\DumpOneReg{\overfullrule}%
\DumpOneReg{\lineskiplimit}%
\DumpOneReg{\maxdepth}%
\DumpOneReg{\splitmaxdepth}%
\DumpOneReg{\boxmaxdepth}%
\DumpOneReg{\delimitershortfall}%
\DumpOneReg{\nulldelimiterspace}%
\DumpOneReg{\scriptspace}%
\DumpOneReg{\mathsurround}%
\DumpOneReg{\predisplaysize}%
\DumpOneReg{\displaywidth}%
\DumpOneReg{\displayindent}%
\DumpOneReg{\parindent}%
\DumpOneReg{\hangindent}%
\DumpOneReg{\hoffset}%
\DumpOneReg{\voffset}%
\wlog{\string\DumpAllRegs: Glue parameters last.}%
\DumpOneReg{\baselineskip}%
\DumpOneReg{\lineskip}%
\DumpOneReg{\topskip}%
\DumpOneReg{\splittopskip}%
\DumpOneReg{\parskip}%
\DumpOneReg{\leftskip}%
\DumpOneReg{\rightskip}%
\DumpOneReg{\emergencystretch}%
\DumpOneReg{\abovedisplayskip}%
\DumpOneReg{\abovedisplayshortskip}%
\DumpOneReg{\belowdisplayskip}%
\DumpOneReg{\belowdisplayshortskip}%
\wlog{\string\DumpAllRegs: done.}%
\NameDef{@InputD-dumppars.tip}{}
\catcode`\@ = 11
\def\GenAeol #1{%
\edef #1{%
\bgroup
\noexpand\MakeEolActive
\noexpand\@GenAeolOne{%
\csname\string #1-2\endcsname}%
}%
\NameDef{\string #1-2}##1%
\MakeEolActive
\gdef\@GenAeolOne #1#2
{%
\egroup%
#1{#2}%
}%
\catcode`\@ = 12
\NameDef{@InputD-genaeol.tip}{}
\catcode`\@ = 11
\newif\if@VerbFirstLineSuppress
\def\OpenVerbWrFile #1#2#3{%
\immediate\openout #3 = #1.#2
\wlog{\string\OpenVerbWrFile: opened "#1.#2" for
literal writing.}%
\def\CloseVerbWrFile #1{%
\immediate\closeout #1
\wlog{\string\CloseVerbWrFile: closed file for literal writing.}%
\def\BeginVerbWr #1#2{%
\begingroup
\def\@VerbWrStream{#1}%
\CSToStringCat{\@EndVerbWrSt}{#2}%
\wlog{\string\BeginVerbWr: begin}%
\MkOthers
\MakeEolActive
\@VerbWrTabHandling
\@VerbFirstLineSuppresstrue
\expandafter\expandafter\expandafter
\@BeginVerbWrY\expandafter{\@EndVerbWrSt}%
\catcode `| = 0
\catcode`\\ =12
|gdef|@BeginVerbWrY #1{%
|def|@BeginVerbWrX ##1\#1{%
|@BeginVerbWr ##1%
|@VerbWrDoneToken
|@VerbWrDone
}
|@BeginVerbWrX
}
\def\@VerbWrTabHandling{%
\MakeTabActive
\@VerbWrTabHandlingOne
{\MakeTabActive
\gdef\@VerbWrTabHandlingOne{\def^^I{\@TabAsLiteral}}%
\def\@BeginVerbWr{%
\DoFutureLet{\ifx}%
{\@VerbWrDoneToken}%
{\GobbleDoMore
{\@VerbWrDoneToken}{\relax}}%
{\@BeginVerbWrTwo}%
\GenAeol{\@BeginVerbWrTwo}{%
\if@VerbFirstLineSuppress
\@VerbFirstLineSuppressfalse
\else
\immediate\write\@VerbWrStream{#1}%
\fi
\@BeginVerbWr
\def\@VerbWrDone{%
\endgroup
\wlog{\string\@VerbWrDone: done}%
\catcode`\@ = 12
\NameDef{@InputD-verbwr.tip}{}
\catcode`\@ = 11
\def\@DefEndNoteFileExt{eno}
\newwrite\@EndNoteStream
\newcount\@EndNoteCounter
\def\StartEndNoteWriting #1#2#3#4{%
\@EndNoteCounter = 0
\DefaultArg{\@EndNoteBaseName}{#1}{\jobname}%
\DefaultArg{\@EndNoteFileExt}{#2}{\@DefEndNoteFileExt}%
\edef\@EndNoteFileName{\@EndNoteBaseName.\@EndNoteFileExt}%
\wlog{\string\StartEndNoteWriting: output will be written to file
"\@EndNoteFileName".}
\edef\@EndNoteBefore{\string#3}%
\edef\@EndNoteAfter{\string#4}%
\OpenVerbWrFile{\@EndNoteBaseName}{\@EndNoteFileExt}%
{\@EndNoteStream}%
\def\BeginEndNote{%
\advance\@EndNoteCounter by 1
\ifnum\@EndNoteCounter > 1
\immediate\write\@EndNoteStream{\@EndNoteAfter}%
\fi
\immediate\write\@EndNoteStream{\@EndNoteBefore}%
\BeginVerbWr{\@EndNoteStream}{\EndEndNote}
\def\EndEndNoteWriting{%
\immediate\write\@EndNoteStream{\@EndNoteAfter}%
\CloseVerbWrFile{\@EndNoteStream}%
\def\ReadInEndNotes{%
\input \@EndNoteFileName
\catcode`\@ = 12
\NameDef{@InputD-endn-mac.tip}{}
\catcode`\@ = 11
\newdimen \Delta@XY
\newskip\@ParListBeforeAfter
\newskip\@ParListBetweenLabels
\newskip\@ParListAfterLabel
\newcount\@LabeledParNesting \@LabeledParNesting = 0
\newcount\@LabelCounter
\def\BeginAList #1#2#3#4#5#6#7{%
\par
\bgroup
\advance\leftskip by #1
\advance\rightskip by #2
\advance \@LabeledParNesting by 1
\@LabelCounter = 0
\Delta@XY = #3
\ifdim\Delta@XY < 0pt
\errmessage{\string\BeginAList: negative Delta{xy},
made positive.}%
\fi
\@ParListBeforeAfter = #4
\@ParListBetweenLabels = #5
\@ParListAfterLabel = #6
\SetParIndent{#7}
\def\EndAList{%
\par
\vskip\@ParListBeforeAfter
\egroup
\def\@GenLabel #1{%
\par
\advance\@LabelCounter by 1
\ifnum\@LabelCounter = 1
\parskip = \@ParListBeforeAfter
\else
\parskip = \@ParListBetweenLabels
\fi
\noindent
\hbox to 0pt{#1}%
\parskip = \@ParListAfterLabel
\ignorespaces
\def\ItemLL #1{%
\@GenLabel{%
\hskip -\Delta@XY
#1%
\hfil
}%
\def\ItemLR #1{%
\@GenLabel{%
\hss
#1%
\hskip\Delta@XY
}%
\def\ItemRL #1{%
\@GenLabel{%
\hskip\Delta@XY
#1%
\hss
}%
\def\ItemRR #1{%
\@GenLabel{%
\hfil
#1%
\hskip -\Delta@XY
}%
\catcode`\@ = 12
\NameDef{@InputD-parv-1.tip}{}
\catcode`\@ = 11
\newcount\@EnumerateListDepth
\@EnumerateListDepth = 0
\NewCounter{Enumerate1}{\arabic}%
{\TheCounter{Enumerate1}.}{\TheCounter{Enumerate1}}
\NewCounter{Enumerate2}{\alph}%
{(\TheCounter{Enumerate2})}%
{\TheCounter{Enumerate1}.\TheCounter{Enumerate2}}
\NewCounter{Enumerate3}{\roman}%
{\TheCounter{Enumerate3}.}%
{\RefCounter{Enumerate2}.\TheCounter{Enumerate3}}
\NewCounter{Enumerate4}{\Alph}%
{\TheCounter{Enumerate4}.}%
{\RefCounter{Enumerate3}.\TheCounter{Enumerate4}}
\def\BeginEnumerate{%
\begingroup
\global\advance\@EnumerateListDepth by 1
\ifcase\@EnumerateListDepth
\errmessage{\string\BeginEnumerate: no level
zero.}%
\or
\SetCounter{Enumerate1}{0}%
\@BeginEnumerateLevelOne
\def\Label ##1{\@Label{##1}{\RefCounter{Enumerate1}}{1}}%
\def\Item{%
\StepCounter{Enumerate1}%
\ItemLR{\PrintCounter{Enumerate1}}%
}%
\or
\SetCounter{Enumerate2}{0}%
\@BeginEnumerateLevelTwo
\def\Label ##1{\@Label{##1}{\RefCounter{Enumerate2}}{1}}%
\def\Item{%
\StepCounter{Enumerate2}%
\ItemLR{\PrintCounter{Enumerate2}}%
}%
\or
\SetCounter{Enumerate3}{0}%
\@BeginEnumerateLevelThree
\def\Label ##1{\@Label{##1}{\RefCounter{Enumerate3}}{1}}%
\def\Item{%
\StepCounter{Enumerate3}%
\ItemLR{\PrintCounter{Enumerate3}}%
}%
\or
\SetCounter{Enumerate4}{0}%
\@BeginEnumerateLevelFour
\def\Label ##1{\@Label{##1}{\RefCounter{Enumerate4}}{1}}%
\def\Item{%
\StepCounter{Enumerate4}%
\ItemLR{\PrintCounter{Enumerate4}}%
}%
\else
\errmessage{\string\BeginEnumerate: maximum
nesting level of 4 exceeded.}%
\fi
\def\EndEnumerate{%
\EndAList
\endgroup
\global\advance\@EnumerateListDepth by -1
\catcode`\@ = 12
\NameDef{@InputD-enumlist.tip}{}
\def\ErrMessage #1{%
\errmessage{#1}%
\end
\NameDef{@InputD-errmess.tip}{}
\def\PrintEven #1{%
\ifodd #1\relax
\else
Number #1 is even.
\fi
\NameDef{@InputD-evenprin.tip}{}
\everypar = {%
\EvalEveryPars
\ClearEveryPars
\def\EvalEveryParsCE{%
\EveryParC
\EveryParD
\EveryParE
\def\EvalEveryPars{%
\EveryParA
\EveryParB
\EvalEveryParsCE
\EveryParZ
\def\ClearEveryPars{%
\gdef\EveryParA{}%
\gdef\EveryParB{}%
\gdef\EveryParC{}%
\gdef\EveryParD{}%
\gdef\EveryParE{}%
\def\ClearEveryParsAll{%
\ClearEveryPars
\gdef\EveryParZ{}%
\ClearEveryParsAll
\NameDef{@InputD-everypar.tip}{}
\def\FigureBox #1#2{%
\BoxingA{%
\EmptyBox{#1}{0pt}{#2}%
}%
\NameDef{@InputD-figbox.tip}{}
\def\OverallSize #1#2{%
#1 = \ht#2\relax
\advance#1 by \dp#2\relax
\NameDef{@InputD-sumhd.tip}{}
\def\LogPageTG #1{%
\wlog{\string\LogPageTG [#1]:}%
\wlog{\string\pagetotal: \the\pagetotal,
\string\pagegoal: \the\pagegoal}%
\NameDef{@InputD-lpagetg.tip}{}
\newdimen\FreePageSpace
\def\ComputeFreeSpaceOnPage{%
\par
\LogPageTG{\string\ComputeFreeSpaceOnPage}%
\ifdim\pagetotal = 0pt
\FreePageSpace = \vsize
\else
\FreePageSpace = \pagegoal
\advance\FreePageSpace by -\pagetotal
\fi
\def\FreeSpaceConditional{%
0pt = 0pt \fi
\ComputeFreeSpaceOnPage
\ifdim\FreePageSpace
\NameDef{@InputD-freespac.tip}{}
\def\FigureInPar #1#2#3#4#5{%
\par
\message{\string\FigureInPar: start}%
{%
\setbox 0 = \vbox{#1}
\OverallSize{\dimen0}{0}%
\advance\dimen0 by #2
\advance\dimen0 by #3
\advance\dimen0 by #4
\advance\dimen0 by #4
\advance\dimen0 by \parskip
\message{\string\FigureInPar:
available space: \the\FreePageSpace}%
\setbox 0 = \HboxR{\EmptyBox{#2}{0pt}{\hsize}}%
\ifdim\FreeSpaceConditional < \dimen0
\message{\string\FigureInPar:
insufficient space: make it a \string\topinsert.}%
#1\unskip
\space
#5%
\par
\topinsert
\box0
\endinsert
\else
\message{\string\FigureInPar:
Sufficient space: put it here.}%
#1\unskip
\space
\vadjust{%
\vskip #4
\box0
\vskip #4
}%
#5\par
\fi
}
\NameDef{@InputD-figinpar.tip}{}
\catcode`\@ = 11
\def\FirstLineSpecial #1{%
\par
\begingroup
#1
\def\@FLDTemp{}%
\dimen0 = \parindent
\setbox0 = \hbox{ }%
\advance\dimen0 by -\wd0
\@FLDOne
\def\@FLDOne #1 {%
\wlog{\string\@FLDOne: called with "#1".}%
\xdef\@FLDTempa{#1\ }%
\@FLDTwo
\def\@FLDTwo{%
\wlog{\string\@FLDTwo: called}%
\setbox0 = \hbox{\@FLDTempa}%
\advance\dimen0 by \wd0
\ifdim\dimen0 < \hsize
\edef\@FLDTemp{\@FLDTemp\@FLDTempa}%
\let\@FLDNext = \@FLDOne
\else
\leavevmode
\@FLDTemp
\unskip
\break
\aftergroup\@FLDTempa
\let\@FLDNext = \endgroup
\fi
\@FLDNext
\catcode`\@ = 12
\NameDef{@InputD-firstldi.tip}{}
\def\ReportCharSize #1#2{%
{%
\count0 = #2\relax
\setbox 0 = \hbox{#1\char\count0}%
\wlog{\string\ReportCharSize: Font \string#1,
character code \the\count0}%
\wlog{ht / dp / wd: \the\ht0 \space / \the\dp0
\space / \the\wd0}%
}%
\NameDef{@InputD-fo-char.tip}{}
\def\CharactersPerPica #1{%
\setbox0 = \hbox{%
#1\relax
This paragraph has 423 characters. We know that
because we counted it. It is very simple to count, because
the Emacs editor we are using has a function ``advance
by one character.'' And with the prefix command (that's
Emacs terminology) you can execute ``advance by
one character'' 423~times. Now, let's hope that this text
is representative of ordinary text so that our average
number of characters per pica is correct.
}%
{%
\count1 = \wd0
\divide\count1 by 100
\count0 = 423
\multiply\count0 by 65536
\multiply\count0 by 12
\divide\count0 by \count1
\count2 = \count0
\divide\count2 by 100
\IModN{\count0}{100}{\count3}%
\the\count2.\LeadingZ{\count3}%
}%
\NameDef{@InputD-font-cpp.tip}{}
\def\FormLine #1#2#3{%
{%
\setbox0 = \hbox{#2}%
\dimen0 = #1%
\advance\dimen0 by -\wd0
\hbox{%
\box0
\hbox to 0pt{%
\vrule width \dimen0 height 0.4pt depth 0pt
\hss
}%
\raise 3pt \hbox to \dimen0 {\hfil #3\hfil}%
}%
}%
\NameDef{@InputD-formline.tip}{}
\catcode`\@ = 11
\def\@OctPrintFontTable#1{%
\hbox{%
\rm\'{}%
\kern-.2em
\it #1\/%
\kern.05em
}%
\def\@HexPrintFontTable#1{%
\hbox{\rm\H{}\tt#1}%
\def\@OddLineFontTable#1{%
\cr
\noalign{\nointerlineskip}
\multispan{19}\hrulefill&
\setbox0 = \hbox{%
\lower 2.3pt\hbox{%
\@HexPrintFontTable{#1x}%
}%
}%
\smash{\box0}%
\cr
\noalign{\nointerlineskip}
\def\@EvenLineFontTable{\cr\noalign{\hrule}}
\def\@FontTableStrut{\lower4.5pt\vbox to 14pt{}}
\def\BeginFontTable #1{%
$$
\postdisplaypenalty = 0
\global\count@=0
#1
\halign to\hsize\bgroup
\@FontTableStrut##\relax \tabskip = 0pt plus 10pt&
&\hfil##\hfil&\vrule##%
\cr
\lower6.5pt\null
&&&
\@OctPrintFontTable0&&
\@OctPrintFontTable1&&
\@OctPrintFontTable2&&
\@OctPrintFontTable3&&
\@OctPrintFontTable4&&
\@OctPrintFontTable5&&
\@OctPrintFontTable6&&
\@OctPrintFontTable7&
\@EvenLineFontTable
\def\EndFontTable{%
\raise 11.5pt\null
&&&
\@HexPrintFontTable 8&&
\@HexPrintFontTable 9&&
\@HexPrintFontTable A&&
\@HexPrintFontTable B&&
\@HexPrintFontTable C&&
\@HexPrintFontTable D&&
\@HexPrintFontTable E&&
\@HexPrintFontTable F&
\cr
\egroup
$$%
\def\:{%
\setbox0 = \hbox{%
\char\count@
}%
\ifdim\ht0 > 7.5pt
\@RepositionFontTable
\else
\ifdim\dp0 > 2.5pt
\@RepositionFontTable
\fi
\fi
\box0
\global\advance\count@ by 1
\def\@RepositionFontTable{%
\setbox0 = \hbox{%
$
\vcenter{%
\kern 2pt
\box0
\kern 2pt
}
$%
}%
\def\NormalFontTable{%
&\@OctPrintFontTable{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable0
&\@OctPrintFontTable{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
&\@OctPrintFontTable{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable1
&\@OctPrintFontTable{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
&\@OctPrintFontTable{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable2
&\@OctPrintFontTable{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
&\@OctPrintFontTable{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable3
&\@OctPrintFontTable{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
&\@OctPrintFontTable{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable4
&\@OctPrintFontTable{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
&\@OctPrintFontTable{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable5
&\@OctPrintFontTable{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
&\@OctPrintFontTable{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable6
&\@OctPrintFontTable{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
&\@OctPrintFontTable{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable7
&\@OctPrintFontTable{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
\def\MoreFontTable{%
&\@OctPrintFontTable{20x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable8
&\@OctPrintFontTable{21x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
&\@OctPrintFontTable{22x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable9
&\@OctPrintFontTable{23x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
&\@OctPrintFontTable{24x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable A
&\@OctPrintFontTable{25x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
&\@OctPrintFontTable{26x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable B
&\@OctPrintFontTable{27x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
&\@OctPrintFontTable{30x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable C
&\@OctPrintFontTable{31x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
&\@OctPrintFontTable{32x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable D
&\@OctPrintFontTable{33x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
&\@OctPrintFontTable{34x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable E
&\@OctPrintFontTable{35x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
&\@OctPrintFontTable{36x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&&\@OddLineFontTable F
&\@OctPrintFontTable{37x}&&\:&&\:&&\:&&\:&&\:&&\:&&
\:&&\:&\@EvenLineFontTable
\catcode`\@ = 12
\NameDef{@InputD-fotable.tip}{}
\catcode`\@ = 11
\def\ForEachToken #1#2{%
\def\@ForEachTokenMacro{#2}%
\expandafter\@ForEachToken\the#1\@ForEachTokenDel
\def\@ForEachToken #1{%
\if\StringsEqualConditional{\string\@ForEachTokenDel}{\string#1}%
\let\@ForEachTokenNext = \relax % Done.
\else
\@ForEachTokenMacro{#1}% % Call macro and continue.
\let\@ForEachTokenNext = \@ForEachToken
\fi
\@ForEachTokenNext
\catcode`\@ = 12
\NameDef{@InputD-fotok.tip}{}
\def\frac #1#2{%
{#1 \over #2}%
\NameDef{@InputD-frac.tip}{}
\newdimen\CurrentFontSize
\def\DefineFontSizeGroup #1#2{%
\wlog{\string\DefineFontSizeGroup: defining group "#1" (#2 pt)}%
\NameDef{FontSize#1}{%
\def\rm{\fam = 0 \NameUse{#1rm}}%
\def\bf{\fam = \bffam \NameUse{#1bf}}%
\def\it{\fam = \itfam \NameUse{#1it}}%
\def\tt{\fam = \ttfam \NameUse{#1tt}}%
\def\sc{\NameUse{#1sc}}%
\def\sl{\fam = \slfam \NameUse{#1sl}}%
\CurrentFontSize = #2pt
\baselineskip = \LineSpaceMultFactor\CurrentFontSize
\rm
}
\def\LineSpaceMultFactor{1.2}
\NameDef{@InputD-fsized.tip}{}
\catcode`\@ = 11
\def\FutureLetNoSpace #1#2{%
\def\@FutureLetTokenA{#1}%
\def\@FutureLetTokenB{#2}%
\@FutureLetOne
\def\@FutureLetOne{%
\DoFutureLet{\ifx}{ }%
{\@FutureLetThree}{\@FutureLetOk}%
\edef\@FutureLetNoSpaceTemp{%
\def\noexpand\@FutureLetThree\space{\noexpand\@FutureLetOne}%
\@FutureLetNoSpaceTemp
\def\@FutureLetOk{%
\expandafter\futurelet\@FutureLetTokenA\@FutureLetTokenB
\long\def\DoLongFutureLetNoSpace #1#2#3#4{%
\def\@FutureLetDecideNoSpace{%
#1#2\@FutureLetTokenNoSpace
\def\@FutureLetNextNoSpace{#3}%
\else
\def\@FutureLetNextNoSpace{#4}%
\fi
\@FutureLetNextNoSpace
}%
\FutureLetNoSpace{\@FutureLetTokenNoSpace}%
{\@FutureLetDecideNoSpace}%
\def\DoFutureLetNoSpace #1#2#3#4{%
\DoLongFutureLetNoSpace{#1}{#2}{#3}{#4}%
\catcode`\@ = 12
\NameDef{@InputD-funospac.tip}{}
\def\ParLookAhead #1#2{%
\DoLongFutureLetNoSpace{\ifx}{\par}%
{#1}{#2}%
\NameDef{@InputD-futpar.tip}{}
\catcode`\@ = 11
\newskip\@MaxVskipGlue
\def\MaxVskip #1{%
\par
\@MaxVskipGlue = #1\relax
\ifdim\lastskip < \@MaxVskipGlue
\ifdim\lastskip = 0pt
\else
\vskip -\lastskip
\fi
\vskip\@MaxVskipGlue
\fi
\catcode`\@ = 12
\NameDef{@InputD-vsmax.tip}{}
\newdimen\NormalParIndent
\def\SetParIndent #1{%
\NormalParIndent = #1%
\parindent = #1%
\def\SuppressNextParIndent{%
\global\parindent = 0pt
\gdef\EveryParA{%
\global\parindent = \NormalParIndent
% \hskip-\parindent
}%
\def\CancelSuppressNextParIndent{%
\global\parindent = \NormalParIndent
\gdef\EveryParA{}%
\NameDef{@InputD-parin.tip}{}
\newtoks\EveryHeading
\EveryHeading = {}
\catcode`\@ = 11
\newcount\@GenericHeadingCount
\newcount\@GenericHeadingIndent
\def\LineBreakHeading{%
\errmessage{%
\string\LineBreakHeading/\string\LineBreakToc:
can only be used inside a heading.}%
\let\LineBreakToc = \LineBreakHeading
\def\IgnoreInRunnningHead #1{%
#1%
\def\GenericHeading #1#2#3#4#5{%
\par
\the\EveryHeading
\@GenericHeadingCount = #1
\@GenericHeadingIndent = #5
\MaxVskip{#2}%
\ifdim\leftskip = 0pt
\else
\message{\string\GenericHeading: \noexpand\leftskip
is non-zero, forgotten to terminate a list?}%
\fi
\begingroup
\interlinepenalty = 10000
\parindent = 0pt
\parskip = 0pt
\ifnum #4 = 1
\hyphenpenalty = 10000
\fi
\ifnum #3 = 1
\rightskip = 0pt plus 50pt
\fi
\@GenericHeading
\def\@GenericHeading #1#2#3#4#5#6#7{%
#3%
\def\LineBreakHeading{\hfil\break}%
\def\LineBreakToc{ }%
\ifdim #4 > 0pt
\ifnum\@GenericHeadingIndent = 0
\hangindent = #4
\hangafter = 1
\leavevmode
\hbox to #4{#5\hfil}%
\else
\leavevmode
\hbox to #4{#5\hfil}%
\fi
\else
\setbox0 = \hbox{#5\hskip -#4}
\ifnum\@GenericHeadingIndent = 0
\hangindent = \wd0
\hangafter = 1
\leavevmode
\box0
\else
\leavevmode
\box0
\fi
\fi
#6%
\if\NameDefinedConditional{WriteToAuxSpecial}%
\def\LineBreakToc{\hfil\break}%
\def\LineBreakHeading{ }%
\WriteToAuxSpecial{toc}{\the\@GenericHeadingCount}%
{#5}{#7}{\PrintCounter{PageNo}}%
\fi
\par
\endgroup
\nobreak
\vskip #1
\ifnum #2 = 0
\SuppressNextParIndent
\fi
\catcode`\@ = 12
\NameDef{@InputD-genhead.tip}{}
\newcount\ResultNumberOfLines
\def\GetNumberOfLines #1#2{%
{%
\setbox 0 = \vbox{%
\hsize = #2
#1
\par
\global\ResultNumberOfLines = \prevgraf
}%
}%
\NameDef{@InputD-getnuml.tip}{}
\def\GobbleOne #1{}
\def\GobbleTwo #1#2{}
\def\GobbleThree#1#2#3{}
\def\GobbleFour #1#2#3#4{}
\def\GobbleFive #1#2#3#4#5{}
\def\GobbleSix #1#2#3#4#5#6{}
\def\GobbleSeven#1#2#3#4#5#6#7{}
\def\GobbleEight#1#2#3#4#5#6#7#8{}
\def\GobbleNine #1#2#3#4#5#6#7#8#9{}
\NameDef{@InputD-gobble.tip}{}
\catcode`\@ = 11
\newdimen\@ScaleLength
\def\SetScale #1{%
\@ScaleLength = #1
\SetScale{1mm}
\newdimen\@LineThickness
\def\SetLineThickness #1{%
\@LineThickness = #1
\SetLineThickness{0.3mm}
\newbox\@GraphDataBox
\def\SetGraphDataBox #1{%
\dimen0 = #1%
\setbox\@GraphDataBox =
\hbox{%
\hskip -0.5\dimen0
\vrule height 0.5\dimen0
depth 0.5\dimen0
width 1.0\dimen0
}%
\ZeroBox{\@GraphDataBox}%
\SetGraphDataBox{2mm}
\def\DrawDataBox (#1,#2){%
{%
\setbox0 = \hbox{%
\hskip #1\@ScaleLength
\raise #2\@ScaleLength\copy\@GraphDataBox
}%
\ZeroBoxOut{0}%
}%
\def\DrawHLine (#1,#2)#3{%
{%
\setbox0 = \hbox{%
\hskip #1\@ScaleLength
\raise #2\@ScaleLength
\hbox{%
\vrule height 0.5\@LineThickness
depth 0.5\@LineThickness
width #3\@ScaleLength
}%
}%
\ZeroBoxOut{0}%
}%
\def\DrawVLine (#1,#2)#3{%
{%
\setbox0 = \hbox{%
\hskip #1\@ScaleLength
\hskip -0.5\@LineThickness
\raise #2\@ScaleLength
\hbox{%
\vrule height #3\@ScaleLength
depth 0pt
width \@LineThickness
}%
}%
\ZeroBoxOut{0}%
}%
\catcode`\@ = 12
\NameDef{@InputD-graphmac.tip}{}
\def\Hex #1{%
{%
\count0 = #1%
\count1 = #1%
\divide\count0 by 16
\count2 = \count0
\multiply \count2 by -16
\advance \count1 by \count2
\ifnum \count0 > 0
\Hex{\count0}%
\fi
\HexDigit{\count1}%
}%
\def\HexDigit #1{%
{%
\count0 = #1\relax
\ifnum \count0 < 10
\number\count0 % or \the\count0
\else
\advance\count0 by -10
\advance\count0 by `A
\char\count0
\fi
}%
\NameDef{@InputD-hex.tip}{}
\newif\ifEvenConditionalResult
\def\EvenConditional #1{%
TT\fi
\ifodd #1\relax
\EvenConditionalResultfalse
\else
\EvenConditionalResulttrue
\fi
\ifEvenConditionalResult
\NameDef{@InputD-ifeven.tip}{}
\catcode`\@ = 11
\newif\if@Def
\def\XDefinedConditional #1{%
TT\fi
\ifx #1\@AlwaysUndefinedToken
\@Deffalse
\else
\@Deftrue
\fi
\if@Def
\catcode`\@ = 12
\NameDef{@InputD-ifx-def.tip}{}
\catcode`\@ = 11
\def\IfXConditional #1#2{%
TT\fi
\def\@IfXConditionalOne{#1}%
\def\@IfXConditionalTwo{#2}%
\ifx\@IfXConditionalOne\@IfXConditionalTwo
\catcode`\@ = 12
\NameDef{@InputD-ifx-mac.tip}{}
\def\InputAt #1{%
\catcode`\@ = 11
\input #1
\catcode`\@ = 12
\NameDef{@InputD-input-at.tip}{}
\catcode`\@ = 11
\def\InputC #1{%
\if\FileExistsConditional{#1}%
\input #1
\else
\message{\string\InputC: there is no file "#1".}%
\fi
\def\InputCWithAt #1{%
\catcode`@ = 11
\InputC{#1}%
\catcode`@ = 12
\catcode`\@ = 12
\NameDef{@InputD-inputc.tip}{}
\catcode`\@ = 11
\def\ReverseString #1#2{%
\def\@ReverseStringName{#1}%
\def\@ReversedString{}%
\edef\@ReverseTemp{#2}%
\ShowX\@ReverseTemp
\expandafter\@ReverseString\@ReverseTemp\@Del
\def\@ReverseString #1{%
\ifx #1\@Del
\expandafter\edef\@ReverseStringName{\@ReversedString}%
\let\@ReverseStringNext = \relax
\else
\edef\@ReversedString{#1\@ReversedString}%
\let\@ReverseStringNext = \@ReverseString
\def\@ReverseStringNext{\@ReverseString}%
\fi
\@ReverseStringNext
\catcode`\@ = 12
\NameDef{@InputD-reverses.tip}{}
\catcode`\@ = 11
\def\SuffixConditional #1#2{%
TT\fi
\ReverseString{\@MainSuffixString}{#1}%
\ReverseString{\@SuffixSuffixString}{#2}%
\if\PrefixConditional{\@MainSuffixString}{\@SuffixSuffixString}%
\catcode`\@ = 12
\NameDef{@InputD-issuffix.tip}{}
\catcode`\@ = 11
\newcount\@ItemListDepth
\@ItemListDepth = 0
\def\BeginItemize{%
\begingroup
\global\advance\@ItemListDepth by 1
\ifcase\@ItemListDepth\or
\@BeginItemizeLevelOne
\def\Item{\ItemLL{$\bullet$}}%
\or
\@BeginItemizeLevelTwo
\def\Item{\ItemLL{--}}%
\or
\@BeginItemizeLevelThree
\def\Item{\ItemLL{*}}%
\or
\@BeginItemizeLevelFour
\def\Item{\ItemLL{+}}%
\else
\errmessage{\string\BeginItemize: maximum nesting of
4 exceeded.}%
\fi
\def\EndItemize{%
\EndAList
\endgroup
\global\advance\@ItemListDepth by -1
\catcode`\@ = 12
\NameDef{@InputD-itemizel.tip}{}
\def\hang{%
\hangindent = \parindent
\def\item{%
\par
\hang
\textindent
\def\itemitem{%
\par
\indent
\hangindent = 2\parindent
\textindent
\def\textindent #1{%
\indent
\llap{#1\enspace}%
\ignorespaces
\def\itemitemitem{%
\par
\indent
\indent
\hangindent = 3\parindent
\textindent
\NameDef{@InputD-itemplan.tip}{}
\catcode`\@ = 11
\def\WordsToTeXList #1#2\EndWordsToTeXList{%
\def\@WordsToTeXListName{#1}%
\expandafter\def\@WordsToTeXListName{}%
\@WordsToTeXListNextName #2 \EndWordsToTeXList
\def\@WordsToTeXListNextName #1 {%
\if\EmptyStringConditional{#1}%
\else
\expandafter\RightAppendElement\@WordsToTeXListName{#1}%
\fi
\DoFutureLet{\ifx}{\EndWordsToTeXList}%
{\@WordsToTeXListEnd}{\@WordsToTeXListNextName}%
\def\@WordsToTeXListEnd\EndWordsToTeXList{}
\catcode`\@ = 12
\NameDef{@InputD-wtolist.tip}{}
\catcode`\@ = 11
\newdimen\@MaximumCurrentLineWidth
\newdimen\@LineWidthLastLine
\newdimen\@LineWidthMinDiff
\newbox\@IPCurrentLineBox
\newbox\@IPCurrentLineBoxTry
\def\InvertedPyramid #1#2#3{%
\WordsToTeXList{\IVList}#3\EndWordsToTeXList
\def\LineLengthList{#1}%
\@LineWidthLastLine = 0pt
\@LineWidthMinDiff = #2
\CarOfList{\IVList}{\@IVListTemp}
\DropFirstElementOfList{\IVList}
\setbox\@IPCurrentLineBox = \hbox{\@IVListTemp}%
\CarOfList{\LineLengthList}{\@IVListTemp}%
\@MaximumCurrentLineWidth = \@IVListTemp
\DropFirstElementOfList{\LineLengthList}%
\ForEveryListElement{\IVList}{\@IVListTypeset}%
\ifvoid\@IPCurrentLineBox
\errmessage{\string\InvertedPyramid:
empty \string\@IPCurrentLineBox}%
\else
\centerline{\box\@IPCurrentLineBox}%
\fi
\def\@IVListTypeset #1{%
\setbox\@IPCurrentLineBoxTry =
\hbox{\copy\@IPCurrentLineBox \space#1}%
\ifdim\wd\@IPCurrentLineBoxTry < \@MaximumCurrentLineWidth
\setbox\@IPCurrentLineBox = \box\@IPCurrentLineBoxTry
\else
\@LineWidthLastLine = \wd\@IPCurrentLineBox
\centerline{\box\@IPCurrentLineBox}%
\setbox\@IPCurrentLineBox = \hbox{#1}%
\CarOfList{\LineLengthList}{\@IVListTemp}%
\@MaximumCurrentLineWidth = \@IVListTemp
\DropFirstElementOfList{\LineLengthList}%
\dimen0 = \@LineWidthLastLine
\advance\dimen0 by -\@MaximumCurrentLineWidth
\ifdim\dimen0 < \@LineWidthMinDiff
\@MaximumCurrentLineWidth = \@LineWidthLastLine
\advance\@MaximumCurrentLineWidth by -\@LineWidthMinDiff
\fi
\fi
\catcode`\@ = 12
\NameDef{@InputD-ivpyr.tip}{}
\catcode`\@ = 11
\newcount\@ValueOfDecimalPosition
\newcount\@ValueOfDecimalPositionLoopCount
\def\ValueOfDecimalPosition #1#2#3{%
\CheckRange{#2}{0}{9}{\string\ValueOfDecimalPosition:
\#2 must be in the range 0 .. 9}%
\AbsoluteValue{#1}{\@ValueOfDecimalPosition}%
\DoLoop{\@ValueOfDecimalPositionLoopCount}{1}{1}{#2}%
{\global\divide\@ValueOfDecimalPosition by 10}%
\IModN{\@ValueOfDecimalPosition}{10}{#3}%
\catcode`\@ = 12
\NameDef{@InputD-valdecpo.tip}{}
\catcode`\@ = 11
\newcount\@LargestDecimalPlaceCount
\def\LargestDecimalPlace #1#2{%
\AbsoluteValue{#1}{\@LargestDecimalPlaceCount}%
\wlog{We make progress}%
#2 = 0
\@LargestDecimalPlaceMore{#2}%
\def\@LargestDecimalPlaceMore #1{%
\wlog{One round: \the#1}%
\ifnum\@LargestDecimalPlaceCount < 10
\def\@LargestDecimalPlaceMoreNext{}%
\else
\advance #1 by 1
\divide\@LargestDecimalPlaceCount by 10
\def\@LargestDecimalPlaceMoreNext{%
\@LargestDecimalPlaceMore{#1}%
}%
\fi
\@LargestDecimalPlaceMoreNext
\catcode`\@ = 12
\NameDef{@InputD-largdp.tip}{}
\catcode`\@ = 11
\def\\{%
\hfil\break
\hbox{}%
\DoFutureLet{\ifx}{[}{\@HfilBreakHskip}{\ignorespaces}%
\def\@HfilBreakHskip [#1]{%
\hskip #1%
\ignorespaces
\catcode`\@ = 12
\NameDef{@InputD-lbpar.tip}{}
\catcode`\@ = 11
\def\LoadCountZeroToNine #1#2#3#4#5#6#7#8#9{%
\count0 = #1\relax
\count1 = #2\relax
\count2 = #3\relax
\count3 = #4\relax
\count4 = #5\relax
\count5 = #6\relax
\count6 = #7\relax
\count7 = #8\relax
\count8 = #9\relax
\@LoadCountNine
\def\@LoadCountNine #1{%
\count9 = #1\relax
\catcode`\@ = 12
\NameDef{@InputD-lc0to9.tip}{}
\def\RightLeaderLine #1{%
\line{\leaders\hrule\hss #1}%
\def\LeftLeaderLine #1{%
\line{#1\leaders\hrule\hss}%
\def\CenterLeaderLine #1{%
\line{\leaders\hrule\hss #1\leaders\hrule\hss}%
\NameDef{@InputD-leadline.tip}{}
\def\LeftDisplay #1$${%
\leftline{%
\hskip 20pt
$
\displaystyle {#1}
$%
}%
$$
\NameDef{@InputD-leftdm.tip}{}
\def\LoadFontOnDemand #1#2{%
\def #1{%
\global\font#1 = #2\relax
#1%
\message{\string\LoadFontOnDemand: font \string#1
(#2) loaded on demand.}%
}%
\NameDef{@InputD-lfondem.tip}{}
\catcode`\@ = 11
\newif\if@Defined
\def\DefinedConditional #1{%
TT\fi
\ifx\@UndefinedToken #1%
\@Definedfalse
\else
\@Definedtrue
\fi
\if@Defined
\catcode`\@ = 12
\NameDef{@InputD-testdef.tip}{}
\def\FormatIsLaTeXConditional{%
TT\fi
\if\DefinedConditional{\documentstyle}%
\NameDef{@InputD-loadedla.tip}{}
\def\BeginMath{%
\ifmath
\ifinner
\errmessage{\string\BeginMath: already in math
mode, \string\BeginMath ignored.}%
\else
\errmessage{\string\BeginMath: in display math
mode, terminated and math mode started.}%
$$
$
\fi
\else
$\relax
\fi
\def\EndMath{%
\ifmath
\ifinner
$%
\else
\errmessage{\string\EndMath: you are in display math
mode! Should have used \string\EndDisplayMath!}%
$$
\fi
\else
\errmessage{\string\EndMath: already in math
mode, \string\EndMath ignored.}%
\fi
\def\BeginDisplayMath{%
\ifmath
\ifinner
\errmessage{\string\BeginDisplayMath: in inline
math mode, terminate it, start display math.}%
$
$$
\else
\errmessage{\string\BeginDisplayMath: already in math
mode, \string\BeginDisplayMath ignored.}%
\fi
\else
$$
\fi
\def\EndDisplayMath{%
\ifmath
\ifinner
\errmessage{\string\EndDisplayMath: inline
math mode in effect, did you intend to
write \string\EndMath?}%
$%
\else
$$
\fi
\else
\errmessage{\string\EndDisplayMath: not in math
mode, \string\EndDisplayMath ignored.}%
\fi
\NameDef{@InputD-mathenv.tip}{}
\def\MaxDimen #1#2#3#4{%
\ifdim #2<#3\relax
#4#1 = #3\relax
\else
#4#1 = #2\relax
\fi
\def\MinDimen #1#2#3#4{%
\ifdim #2<#3\relax
#4#1 = #2\relax
\else
#4#1 = #3\relax
\fi
\NameDef{@InputD-maxmindi.tip}{}
\def\ModuloOneAdvanceNumCond #1#2{%
0=0\fi
\global\advance #1 by 1
\ifnum #1 = #2\relax
\global #1 = 0
\fi
\ifnum #1%
\NameDef{@InputD-modonead.tip}{}
\def\MultiRowDel #1#2{%
{%
\mathsurround = 0pt
\setbox 0 = \hbox{%
$%
\vcenter{%
\hbox{%
$
\left#1%
\vrule height #2 depth #2 width 0pt
\right.
$%
}%
}%
$%
}%
\ht0 = 0pt
\dp0 = 0pt
\box 0
}%
\def\MultiRowDel #1#2{%
{%
\mathsurround = 0pt
\setbox 0 = \hbox{%
$
\left#1%
\vrule height #2 depth #2 width 0pt
\right.
$%
}%
\ht0 = 0pt
\dp0 = 0pt
\box 0
}%
\NameDef{@InputD-mrdel.tip}{}
\catcode`\@ = 11
\newbox\@NBox
\def\NaturalHeight #1#2{%
\setbox\@NBox = \vbox{\unvcopy #2}
#1 = \ht\@NBox
\def\NaturalDepth #1#2{%
\setbox\@NBox = \vbox{\unvcopy #2}
#1 = \dp\@NBox
\catcode`\@ = 12
\NameDef{@InputD-nathd.tip}{}
\catcode`\@ = 11
\def\NextCharTest #1#2#3{%
\def\@NextCharTestYes #1{#2}%
\def\@NextCharTestNo {#3}%
\DoFutureLet{\ifx}{#1}{\@NextCharTestYes}{\@NextCharTestNo}%
\catcode`\@ = 12
\NameDef{@InputD-nctest.tip}{}
\catcode`\@ = 11
\def\pagecontents{%
\wlog{\noexpand\pagecontents from op-pagec.tip called.}%
\NameUse{@ShowPlainLists}%
\ifvoid\topins
\wlog{\string\pagecontents: no topinserts.}%
\if\NameDefinedConditional{@TopInsertSize}%
\ifdim\@TopInsertSize < 20pt
\global\@TopInsertSize = 0pt
\fi
\fi
\else
\NameUse{ChangeBarPush}%
\NameUse{@UpdateTopInsertSize}%
\unvbox\topins
\NameUse{ChangeBarPop}%
\fi
\dimen@ = \dp 255
\unvbox 255
\ifvoid\footins
\else
\@PrintFootnotePlain
\fi
\ifr@ggedbottom
\kern -\dimen@
\vfil
\fi
\def\@PrintFootnotePlain{%
\vskip\skip\footins
\footnoterule
\unvbox\footins
\catcode`\@ = 12
\NameDef{@InputD-op-pagec.tip}{}
\catcode`\@ = 11
\def\endinsert{%
\egroup
\if@mid
\dimen@ = \ht0
\advance\dimen@ by \dp0
\advance\dimen@ by 12pt
\advance\dimen@ by \pagetotal
\ifdim\dimen@ > \pagegoal
\@midfalse
\p@gefalse
\fi
\fi
\NameUse{MidInsertFix}%
\if@mid
\bigskip
\box 0
\bigbreak
\else
\insert\topins{%
\penalty 100
\splittopskip = 0pt
\splitmaxdepth = \maxdimen
\floatingpenalty = 0
\ifp@ge
\dimen@ = \dp0
\vbox to \vsize{
\unvbox 0
\kern -\dimen@
}%
\NameUse{MidInsertFixPage}%
\else
\NameUse{EndInsertTopInsFix}%
\NameUse{MidInsertFixTop}%
\box 0
\nobreak
\bigskip
\fi
}
\fi
\endgroup
\catcode`\@ = 12
\NameDef{@InputD-op-endin.tip}{}
\catcode`\@ = 11
\newdimen\@TopInsertSize
\@TopInsertSize = 0pt
\def\ReportTopInsertSize #1{%
\wlog{\string\@TopInsertSize: "#1"}%
\wlog{\EightSpaces The value of \noexpand\@TopInsertSize is
\the\@TopInsertSize}%
\def\MidInsertFix{%
\ReportTopInsertSize{\string\MidInsertFix}%
\ifdim\@TopInsertSize > 0pt
\@midfalse
\p@gefalse
\fi
\def\MidInsertFixPage{%
\ReportTopInsertSize{\string\MidInsertFixPage[1]}%
\global\advance\@TopInsertSize by \vsize
\ReportTopInsertSize{\string\MidInsertFixPage[2]}%
\def\MidInsertFixTop{%
\ReportTopInsertSize{\string\MidInsertFixTop[1]}%
\global\advance\@TopInsertSize by \ht0
\global\advance\@TopInsertSize by \dp0
\ReportTopInsertSize{\string\MidInsertFixTop[2]}%
\def\@UpdateTopInsertSize{%
\ReportTopInsertSize{\string\@UpdateTopInsertSize[1]}%
\global\advance\@TopInsertSize by -\ht\topins
\global\advance\@TopInsertSize by -\dp\topins
\ReportTopInsertSize{\string\@UpdateTopInsertSize[2]}%
\catcode`\@ = 12
\NameDef{@InputD-new-midi.tip}{}
\catcode`\@ = 11
\def\NewDef #1{%
\ifx #1\@UndefinedToken
\else
\errhelp = {\string\NewDef:
The name of the macro to be defined which you
provided is already in use. Use \show to find out
what the name is used for. The macro definition
will nevertheless be executed.}%
\errmessage{\string\NewDef: "\string#1" already defined.}%
\fi
\def #1%
\def\ReDef #1{%
\ifx #1\@UndefinedToken
\errhelp = {\string\ReDef:
The name of the macro to be redefined which you
provided has never been used before. The macro definition
will nevertheless be executed. }%
\errmessage{\string\ReDef: "\string#1" never defined
before.}%
\fi
\def #1%
\catcode`\@ = 12
\NameDef{@InputD-newdef.tip}{}
\def\NewFont #1{%
\if\DefinedConditional{#1}%
\errmessage{\string\NewFont: intended font name
"\string#1" already used.}
\fi
\font #1%
\NameDef{@InputD-newfont.tip}{}
\catcode`\@ = 11
\let\@input = \input
\def\input{%
\DoFutureLet{\ifx}{\bgroup}{\@InputA}{\@input}%
\def\@InputA #1{\@input #1}
\catcode`\@ = 12
\NameDef{@InputD-newinput.tip}{}
\def\NewPage{%
\vfill
\eject
\NameDef{@InputD-newpage.tip}{}
\def\NewLineMessage #1{%
{%
\newlinechar = `\|%
\message{|#1}%
}%
\NameDef{@InputD-nlm.tip}{}
\def\NewPageRightHand{%
\vfill\supereject
\ifodd\count0
\else
\hbox{}
\vfill\eject
\fi
\def\ShouldBeRightHandPage{%
\ifodd\count0
\else
\errmessage{\string\ShouldBeRightHandPage:
current page number is \the\count0.
Should be odd and NOT EVEN.}%
\NewPageRightHand
\fi
\def\NewPageLeftHand{%
\vfill\supereject
\ifodd\count0
\hbox{}
\vfill\eject
\fi
\NameDef{@InputD-npright.tip}{}
\catcode`\@ = 11
\def\@OneDigitNumberText #1#2{%
\ifcase #2\relax
\ifnum #1=0
\else
zero%
\fi
\or
one\or
two\or
three\or
four\or
five\or
six\or
seven\or
eight\or
nine%
\else
\errmessage{\string\@OneDigitNumberText: number
\number#2 out of range.}%
\fi
\newcount\@NumberToConvert
\newcount\@NumberToConvertTwo
\newcount\@NumberToConvertAndFlag
\def\NumberToText #1{%
\@NumberToConvert = #1\relax
\ifnum\@NumberToConvert < 0
minus
\@NumberToConvert = -\@NumberToConvert
\fi
\CheckRange{\@NumberToConvert}{0}{999999}%
{\string\NumberToText: numbers >= 1.000.000
not handled.}%
\@NumberToConvertAndFlag = 0
\ifnum\@NumberToConvert > 999
\@NumberToConvertTwo = \@NumberToConvert
\divide\@NumberToConvert by 1000
\@NumberToText
\space thousand and
\IModN{\@NumberToConvertTwo}{1000}{\@NumberToConvert}%
\fi
\CheckRange{\@NumberToConvert}{0}{999}%
{\string\NumberToText: internal error 1}%
\@NumberToText
\newcount\@NumberToTextTmp
\def\@NumberToText{%
\ifnum\@NumberToConvert > 99
\ValueOfDecimalPosition{\@NumberToConvert}{2}%
{\@NumberToTextTmp}%
\@OneDigitNumberText{1}{\@NumberToTextTmp}%
\space hundred and
\IModN{\@NumberToConvert}{100}{\@NumberToConvert}%
\fi
\ValueOfDecimalPosition{\@NumberToConvert}{1}%
{\@NumberToTextTmp}%
\ifnum\@NumberToTextTmp > 1
\ifcase\@NumberToTextTmp
\errmessage{\string\@NumberToText:
internal error 1.}%
\or
\errmessage{\string\@NumberToText:
internal error 2.}%
\or
twenty\or
thirty\or
forty\or
fifty\or
sixty\or
seventy\or
eighty\or
ninety%
\else
\errmessage{\string\@NumberToText:
internal error 4.}%
\fi
\IModN{\@NumberToConvert}{10}{\@NumberToTextTmp}%
\@OneDigitNumberText{0}{\@NumberToTextTmp}%
\else
\ifnum\@NumberToTextTmp = 1
\advance\@NumberToConvert by -10
\ifcase\@NumberToConvert
ten\or
eleven\or
twelve\or
thirteen\or
fourteen\or
fifteen\or
sixteen\or
seventeen\or
eighteen\or
nineteen%
\fi
\else
\@OneDigitNumberText{1}{\@NumberToConvert}%
\fi
\fi
\catcode`\@ = 12
\NameDef{@InputD-ntotext.tip}{}
\catcode`\@ = 11
\newcount\@NumberConditionalCounter
\def\@NumberConditional #1#2;{%
\@NumberConditionalCounter = `#1\relax
\def\NumberConditional #1{%
TT\fi
\edef\@NumberConditionalString{#1}%
\expandafter\@NumberConditional\@NumberConditionalString ;
\if\InRangeConditional{\@NumberConditionalCounter}{`\0}{`\9}%
\catcode`\@ = 12
\NameDef{@InputD-numcond.tip}{}
\catcode`\@ = 11
\newcount\@WhileNesting
\@WhileNesting = 0
\def\WhileNum #1#2{%
\global\advance\@WhileNesting by 1
\edef\@WhileArgOne{{\the\@WhileNesting}}%
\expandafter\@WhileNum\@WhileArgOne{#1}{#2}%
\global\advance\@WhileNesting by -1
\def\@WhileNum #1#2#3{%
\ifnum #2\relax
#3\relax
\NameDef{@WhileNum-#1}{\@WhileNum{#1}{#2}{#3}}%
\else
\NameDef{@WhileNum-#1}{}%
\fi
\NameUse{@WhileNum-#1}{}%
\catcode`\@ = 12
\NameDef{@InputD-numwhile.tip}{}
\catcode`\@ = 11
\def\ObeyLines{%
\catcode`\^^M = \active
\@EnableActiveEndOfLine
\catcode`\^^M=\active % Lines must end with '%'.
\gdef\@EnableActiveEndOfLine{%
\def
{\leavevmode\par}%
}%
\catcode`\@ = 12
\NameDef{@InputD-oblines.tip}{}
\catcode`\@ = 11
\def\ObeySpaces{%
\catcode`\ = \active
\@InitActiveSpace
{\catcode`\ = \active
\gdef\@InitActiveSpace{\edef {\VerbControlSpace}}}
\catcode`\@ = 12
\NameDef{@InputD-obspaces.tip}{}
\def\Oct #1{%
{%
\count4 = #1%
\count0 = \count4
\divide\count0 by 8
\ifnum \count0 > 0
\Oct{\count0}%
\fi
\count2 = \count0
\multiply \count2 by -8
\advance \count4 by \count2
\the\count4
}%
\NameDef{@InputD-oct.tip}{}
\def\PrintOdd #1{%
\ifodd #1\relax
Number #1 is odd.
\fi
\NameDef{@InputD-oddprin.tip}{}
\def\PrintOddEven #1{%
\ifodd #1\relax
The number #1 is odd.
\else
The number #1 is even.
\fi
\NameDef{@InputD-oeprin.tip}{}
\catcode`\@ = 11
\def\OptArgX #1#2{%
\let\@OptArgXTemp = #1%
\def\@OptArgXDefault{[#2]}%
\DoLongFutureLet{\ifx}{[}{\@OptArgXTemp}{\@OptArgXB}%
\def\@OptArgXB{\expandafter\@OptArgXTemp\@OptArgXDefault}
\catcode`\@ = 12
\NameDef{@InputD-optargx.tip}{}
\def\ParFl #1#2\par{%
\par
$$
\vbox{
\setbox 0 = \hbox{#1}
\hsize = \wd0
\noindent
\unhbox 0
\space
#2
}
$$
\par
\NameDef{@InputD-par-fl.tip}{}
\def\PickFirstOfTwo #1#2{#1}
\def\PickSecondOfTwo #1#2{#2}
\NameDef{@InputD-pickfs.tip}{}
\catcode`\@ = 11
\newif\if@LabelsOk
\def\@LabelRefPrefix{@REF-}
\def\@LabelIsDefined #1{%
TT\fi
\if\NameDefinedConditional{\@LabelRefPrefix#1}%
\def\@NewLabel #1#2#3{%
\if\@LabelIsDefined{#1}%
\wlog{\string\@NewLabel: warning: label "#1"
already defined.}%
\fi
\NameGdef{\@LabelRefPrefix #1}{{#2}{#3}}%
\let\Saved@NewLabel = \@NewLabel
\def\Ref #1{%
\@ref{0}{#1}%
\if\StringsEqualConditional{\@TheExpandedLabel}{??}%
{??}%
\else
\@TheExpandedLabel
\fi
\@PrintAfterLabel
\def\PageRef #1{%
\@ref{1}{#1}%
\if\StringsEqualConditional{\@TheExpandedLabel}{??}%
{??}%
\else
\@TheExpandedLabel
\fi
\@PrintAfterLabel
\def\@MostRecentLabel{}
\def\@ref #1#2{%
\xdef\@PrintAfterLabel{}%
\DefaultArg{\@ThisLabel}{#2}{\@MostRecentLabel}%
\if\StringsEqualConditional{\@ThisLabel}{.}%
\xdef\@ThisLabel{\@MostRecentLabel}%
\xdef\@PrintAfterLabel{.}%
\fi
\if\StringsEqualConditional{\@ThisLabel}{,}%
\xdef\@ThisLabel{\@MostRecentLabel}%
\xdef\@PrintAfterLabel{,}%
\fi
\if\StringsEqualConditional{\@ThisLabel}{)}%
\xdef\@ThisLabel{\@MostRecentLabel}%
\xdef\@PrintAfterLabel{)}%
\fi
\if\StringsEqualConditional{\@ThisLabel}{;}%
\xdef\@ThisLabel{\@MostRecentLabel}%
\xdef\@PrintAfterLabel{;}%
\fi
\xdef\@MostRecentLabel{\@ThisLabel}%
\if\@LabelIsDefined{\@ThisLabel}%
\edef\@CrefTemp{\NameUse{\@LabelRefPrefix\@ThisLabel}}%
\ifcase #1\relax
\edef\@TheExpandedLabel{%
\expandafter\PickFirstOfTwo\@CrefTemp}%
\or
\edef\@TheExpandedLabel{%
\expandafter\PickSecondOfTwo\@CrefTemp}%
\fi
\else
\def\@TheExpandedLabel{??}
\wlog{\string\@ref: Label \@ThisLabel\space undefined.}%
\fi
\catcode`\@ = 12
\NameDef{@InputD-part-cr.tip}{}
\def\PrintInDollar #1{%
{%
\ifnum #1 < 0
$-$%
\count0 = -#1\relax
\else
\count0 = #1\relax
\fi
\count2 = \count0
\divide\count0 by 100
\the\count0.%
\multiply\count0 by 100
\advance\count2 by -\count0
\ifnum\count2 < 10
0%
\fi
\the\count2
}%
\NameDef{@InputD-pdollars.tip}{}
\catcode`\@ = 11
\def\PartSourceFileNameExtension{tex}
\def\AuxFileNameExtension{aux}
\def\TocFileNameExtension{toc}
\def\LofFileNameExtension{lof}
\def\LotFileNameExtension{lot}
\def\TmpFileNameExtension{tmp}
\newwrite\@PartAuxStream
\newwrite\@TmpFileStream
\def\i@write{\immediate\write}
\def\i@openout{\immediate\openout}
\def\i@closeout{\immediate\closeout}
\def\@ip@write{\i@write\@PartAuxStream}
\def\@p@write{\write\@PartAuxStream}
\def\@IgnoreAuxStuff{%
\let\@NewLabel = \GobbleThree
\let\@SetCounter = \GobbleTwo
\let\@ForSpecialFile = \GobbleFive
\def\@ReadInAuxFiles{%
{%
\def\\##1{\InputCWithAt{##1.aux}}%
\@AllPartsOfDocumentList
}%
\catcode`\@ = 12
\NameDef{@InputD-pm-bas.tip}{}
\catcode`\@ = 11
\def\WriteAuxFileComment #1{%
\@p@write{\PercentSignPure\space #1.}%
\catcode`\@ = 12
\NameDef{@InputD-pm-auxco.tip}{}
\catcode`\@ = 11
\NewCounter{PageNo}{\arabic}{\TheCounter{PageNo}}%
{\TheCounter{PageNo}}
\NewCounter{SWPageNo}{\arabic}%
{\TheCounter{SWPageNo}}{\TheCounter{SWPageNo}}
\def\@PageNumbersToCounterRegs{%
\CounterToRegister{\global\pageno}{PageNo}%
\SetCounter{PageNo}{1}
\@PageNumbersToCounterRegs
\def\advancepageno{%
\StepCounter{PageNo}%
\StepCounter{SWPageNo}%
\@PageNumbersToCounterRegs
\def\folio{%
\PrintCounter{PageNo}%
\catcode`\@ = 12
\NameDef{@InputD-pm-pagen.tip}{}
\catcode`\@ = 11
\def\WriteCountersToAuxFile{%
\@WriteCounter{ChapterNo}%
\@WriteCounter{SectionNo}%
\@WriteCounter{PageNo}%
\def\@WriteCounter #1{%
\@ip@write{%
\noexpand\@SetCounter
{#1}%
{\expandafter\the\csname @C-#1\endcsname}}%
\catcode`\@ = 12
\NameDef{@InputD-pm-wrc.tip}{}
\def\BoldfaceFake #1#2{%
\hbox{%
\hbox to #2{#1\hss}%
\hbox to #2{#1\hss}%
\hbox {#1}% % Last time print text with reg. width.
}%
\NameDef{@InputD-poorbold.tip}{}
\def\PrintAlph #1{%
{%
\count0 = #1%
\advance\count0 by -1
\advance\count0 by `\a
\char\count0
}%
\NameDef{@InputD-pralph.tip}{}
\def\ShowBoxAll #1{%
{%
\nonstopmode
\showboxdepth = 10000
\showboxbreadth = 10000
\showbox #1%
}%
\def\ShowBoxDepthOne #1{%
{%
\nonstopmode
\showboxdepth = 1
\showboxbreadth = 10000
\showbox #1%
}%
\def\ShowBoxDepthTwo #1{%
{%
\nonstopmode
\showboxdepth = 2
\showboxbreadth = 10000
\showbox #1%
}%
\NameDef{@InputD-shboxes.tip}{}
\def\PrintHyphens #1{%
{%
\setbox 0 = \vbox{%
\pretolerance = -1
\hyphenpenalty = -10000
\hsize = 0pt
\leftskip = 0pt
\rightskip = 0pt
\parfillskip = 0pt
\parindent = 0pt
\hfuzz = \maxdimen
\interlinepenalty = 0
\clubpenalty = 0
\widowpenalty = 0
\brokenpenalty = 0
\hskip 0pt
#1
}%
\setbox2 = \hbox{}%
\setbox 9 = \vbox{%
\unvbox 0
\loop
\unskip
\setbox 1 = \lastbox
\ifhbox 1
\global\setbox 2 = \hbox{%
\unhbox 1
\discretionary{}{}{}%
\unhbox 2
}%
\repeat
}%
\unhbox 2
}%
\NameDef{@InputD-prhyph.tip}{}
\def\PrimitiveMarker{%
\leavevmode
{%
\footnotesize\tt
\llap{*}%
}%
\NameDef{@InputD-primmark.tip}{}
\newcount\AstCount
\def\PrintAsterisk #1{%
\AstCount = #1
\ifnum\AstCount < 0
\errmessage{\string\PrintAsterisk: negative counter.}%
\AstCount = 0
\fi
\PrintAsteriskRec
\def\PrintAsteriskRec{%
*%
\advance\AstCount by -1
\ifnum\AstCount = 0
\let\next = \relax
\else
\let\next = \PrintAsteriskRec
\fi
\next
\NameDef{@InputD-printast.tip}{}
\def\PrintRegister #1{%
The current value of {\tt\string #1} is \the#1.%
\def\LogRegister #1{%
\message{The current value of \string#1 is \the#1.}
\NameDef{@InputD-printreg.tip}{}
\def\PrintMode{%
\ifinner
\ifvmode \message{Current mode: inner vertical}\fi
\ifhmode \message{Current mode: restricted horizontal}\fi
\ifmmode \message{Current mode: (inline) math}\fi
\else
\ifvmode \message{Current mode: (regular) vertical}\fi
\ifhmode \message{Current mode: (regular) horizontal}\fi
\ifmmode \message{Current mode: display math}\fi
\fi
\NameDef{@InputD-prmode.tip}{}
\catcode`\@ = 11
\newif\ifProtWrite
\ProtWritetrue
\newcount\@ProtCount
\newcount\@ProtCountX
\newwrite\@ProtWrite
\def\InitProtWrite{%
\ifProtWrite
\immediate\openout\@ProtWrite = \jobname.prt
\fi
\def\CloseProtWrite{%
\immediate\closeout\@ProtWrite
\def\WriteProtocol #1#2{%
\ifProtWrite
{%
\@ProtCount = #1\relax
\def\@WriteSpace{}%
\DoLoop{\count1}{1}{1}{\@ProtCount}%
{\edef\@WriteSpace{\@WriteSpace\FourSpaces}}%
\immediate\write\@ProtWrite{\@WriteSpace #2}%
}%
\fi
\def\BoxToProtocol #1#2#3{%
\ifProtWrite
{%
\WriteProtocol {#1}{\string\BoxToProtocol: #3}%
\@ProtCountX = #1\relax
\advance\@ProtCountX by 1
\ifvoid #2%
\WriteProtocol{\@ProtCountX}{Box register #2
is void.}%
\else
\ifhbox #2%
\WriteProtocol{\@ProtCountX}{Box register #2
is an hbox.}%
\else
\WriteProtocol{\@ProtCountX}{Box register #2
is a vbox.}%
\fi
\fi
\ifvoid #2%
\else
\WriteProtocol{\@ProtCountX}%
{Dimensions: (\the\ht#2+\the\dp#2)*\the\wd#2.}%
\fi
}%
\fi
\catcode`\@ = 12
\NameDef{@InputD-prot.tip}{}
\def\ReportBoxType #1{%
\message{\string\ReportBoxType: }%
\ifvoid #1\message{Box register #1 is void.}\fi
\ifhbox #1\message{Box register #1 contains a horizontal box.}\fi
\ifvbox #1\message{Box register #1 contains a vertical box.}\fi
\NameDef{@InputD-rboxt.tip}{}
\catcode`\@ = 11
\newread\@ReadNumberStream
\newcount\ReadANumberResult
\def\InitReadNumbers #1{%
\openin\@ReadNumberStream = #1
\def\@ReadANumberPar{\par}
\def\ReadANumber{%
\ifeof\@ReadNumberStream
\ReadANumberResult = -1
\else
\read\@ReadNumberStream to \@ReadANumberTemp
\ifx\@ReadANumberTemp\@ReadANumberPar
\ReadANumberResult = -1
\else
\ReadANumberResult = \@ReadANumberTemp
\fi
\fi
\catcode`\@ = 12
\NameDef{@InputD-readnu.tip}{}
\catcode`\@ = 11
\newbox\@ReduceToStrutBox
\def\ReduceToStrut #1{%
\setbox\@ReduceToStrutBox = \hbox{#1}%
\vrule height \ht\@ReduceToStrutBox
depth \dp\@ReduceToStrutBox
width 0pt
\catcode`\@ = 12
\NameDef{@InputD-redtost.tip}{}
\catcode`\@ = 11
\def\MakeRobust{}
\def\TreatAsRobust #1{%
\def #1{%
\noexpand #1%
}%
\newtoks\@RobustTokenList
\@RobustTokenList = {}
\def\AddToRobustList #1{%
\@RobustTokenList = \expandafter{\the\@RobustTokenList #1}%
\def\Robusting{%
\ForEachToken{\@RobustTokenList}{\TreatAsRobust}%
\catcode`\@ = 12
\NameDef{@InputD-robust.tip}{}
\catcode`\@ = 11
\newcount\@SampleParCounter
\newcount\@SampleParSentenceCounter
\@SampleParCounter = 1
\def\SamplePar #1#2{%
\@SampleParSentenceCounter = 0
Identification of this paragraph: {\it #1}.
{\it Sample paragraph~\the\@SampleParCounter,
with~#2 sentences}. So here we go,
and when you check the number of sentences, then note
that these first two sentences do {\it not\/} count.
\loop
\advance\@SampleParSentenceCounter by 1
This is one of the many sentences this macro
generates, to be more specific it is sentence
number~\the\@SampleParSentenceCounter\space of~#2.
\ifnum\@SampleParSentenceCounter < #2
\repeat
\par
\global\advance\@SampleParCounter by 1
\catcode`\@ = 12
\NameDef{@InputD-samplepa.tip}{}
\catcode`\@ = 11
\newdimen\@StrutBaseDimension
\newdimen\@StrutSkipTemp
\def\ComputeStrut{%
\@StrutBaseDimension = \baselineskip
\ifdim\baselineskip < 0pt
\errhelp = {You probably called \string\offinterlineskip
before \string\ComputeStrut}
\errmessage{\string\ComputeStrut: negative
\string\baselineskip (\the\baselineskip)}%
\fi
\def\MyStrut{%
\vrule height 0.7\@StrutBaseDimension
depth 0.3\@StrutBaseDimension
width 0pt
\def\HigherStrut #1{%
\@StrutSkipTemp = 0.7\@StrutBaseDimension
\advance\@StrutSkipTemp by #1%
\vrule height \@StrutSkipTemp
depth 0.3\@StrutBaseDimension
width 0pt
\def\DeeperStrut #1{%
\@StrutSkipTemp = 0.3\@StrutBaseDimension
\advance\@StrutSkipTemp by #1%
\vrule height 0.7\@StrutBaseDimension
depth \@StrutSkipTemp
width 0pt
\ComputeStrut
\catcode`\@ = 12
\NameDef{@InputD-setstrut.tip}{}
\def\ShiftRefPointUpOrDown #1#2{%
\AdvanceBoxDimension{\ht#1}{#2}%
\ifdim\ht#1 < 0pt
\ht#1 = 0pt
\fi
\AdvanceBoxDimension{\dp#1}{-#2}%
\ifdim\dp#1 < 0pt
\dp#1 = 0pt
\fi
\NameDef{@InputD-shiftudb.tip}{}
\catcode`\@ = 11
\newif\ifShowPlainLists
\ShowPlainListsfalse
\def\@ShowPlainLists{%
\ifShowPlainLists
\wlog{*** \string\@ShowPlainLists: main vertical list ***}%
\wlog{*** Page number (\string\count0): \the\count0
\space***}%
\ShowBoxDepthOne{255}%
\ifvoid\footins
\wlog{\string\@ShowPlainLists: no footnotes.}%
\else
\wlog{*** \string\@ShowPlainLists: footnote box ***}%
\ShowBoxDepthOne{\footins}%
\fi
\ifvoid\topins
\wlog{\string\@ShowPlainLists: no topinserts.}%
\else
\wlog{*** \string\@ShowPlainLists: top inserts ***}%
\ShowBoxDepthTwo{\topins}%
\fi
\wlog{*** \string\@ShowPlainLists: end dump of
page: \the\count0 \space ***}%
\fi
\catcode`\@ = 12
\NameDef{@InputD-showpll.tip}{}
\def\SignatureLine #1#2{%
\hbox{%
\hbox to 0pt{%
\vrule width #1 height 0.6pt depth 0pt
\hss % Equivalent to \hskip -#1.
}%
\lower 10pt \hbox to #1{\hfil #2\hfil}%
}%
\NameDef{@InputD-sigline.tip}{}
\catcode`\@ = 11
\def\SaveSpaceFactor{%
\xdef\@SavedSpaceFactor{%
\spacefactor = \the\spacefactor
}%
\def\RestoreSpaceFactor{%
\@SavedSpaceFactor
\catcode`\@ = 12
\NameDef{@InputD-spacefac.tip}{}
\catcode`\@ = 11
\newcount\@PPLineNumber
\newbox\@PrintParWithLinesBox
\newbox\@PrintParWithLinesTemp
\def\PrintParWithLineNumbers #1{%
\par
\@PPLineNumber = 1
\splittopskip = 0.6666\baselineskip
\setbox\@PrintParWithLinesBox = \vbox{#1}
\@PrintParWithLineNumbers
\def\@PrintParWithLineNumbers{
\ifvoid\@PrintParWithLinesBox
\let\@PPNext = \relax
\else
\setbox\@PrintParWithLinesTemp =
\vsplit\@PrintParWithLinesBox to 0.666\baselineskip
\hbox{%
\llap{%
\the\@PPLineNumber:%
\hskip 10pt
}%
\box \@PrintParWithLinesTemp
}%
\advance\@PPLineNumber by 1
\wlog{Line \the\@PPLineNumber}%
\let\@PPNext = \@PrintParWithLineNumbers
\fi
\@PPNext
\catcode`\@ = 12
\NameDef{@InputD-splitpar.tip}{}
\def\SameSizeMath{
\textfont0 = \tenrm
\scriptfont0 = \tenrm
\scriptscriptfont0 = \tenrm
\textfont1 = \tenit
\scriptfont1 = \tenit
\scriptscriptfont1 = \tenit
\textfont2 = \tensy
\scriptfont2 = \tensy
\scriptscriptfont2 = \tensy
\textfont3 = \tenex
\scriptfont3 = \tenex
\scriptscriptfont3 = \tenex
\textfont\itfam = \tenit
\textfont\slfam = \tensl
\textfont\bffam = \tenbf
\scriptfont\bffam = \tenbf
\scriptscriptfont\bffam = \tenbf
\textfont\ttfam = \tentt
\NameDef{@InputD-ssmath.tip}{}
\catcode`\@ = 11
\newcount\@StringSwitchMatchCount
\def\StringSwitch #1#2{%
\edef\@StringSwitchMasterString{#1}%
\if\EmptyStringConditional{#1}%
\errmessage{\string\StringSwitch: master string
must not be the empty string.}%
\fi
\def\@StringSwitchMatchCommonCode{#2}%
\@StringSwitchMatchCount = 0
\@StringSwitch
\def\@StringSwitchOne #1#2{%
\def\@StringSwitchString{#1}%
\def\@StringSwitchAction{#2}%
\def\@StringSwitch #1{%
\@StringSwitchOne #1%
\if\EmptyStringConditional{\@StringSwitchString}%
\ifcase\@StringSwitchMatchCount
\@StringSwitchAction
\or
\else
\errmessage{\string\StringSwitch: double match.}%
\fi
\def\@StringSwitchNext{}%
\else
\if\StringsEqualConditional{\@StringSwitchMasterString}%
{\@StringSwitchString}%
\advance\@StringSwitchMatchCount by 1
\@StringSwitchMatchCommonCode
\@StringSwitchAction
\fi
\def\@StringSwitchNext{\@StringSwitch}%
\fi
\@StringSwitchNext
\catcode`\@ = 12
\NameDef{@InputD-stswitch.tip}{}
\def\SubstituteFontX #1#2#3#4{%
\def#1{%
\message{%
\string\SubstituteFontX: No \string#2 font of
#3pt, using \noexpand\rm instead.%
}%
\global\let #1 = #4%
#1%
}%
\NameDef{@InputD-substf.tip}{}
\catcode`\@ = 11
\newbox\@SwapBox
\def\SwapBoxRegs #1#2{%
\setbox\@SwapBox = \box#1%
\setbox#1 = \box#2%
\setbox#2 = \box\@SwapBox
\catcode`\@ = 12
\NameDef{@InputD-swapbox.tip}{}
\def\TableBeginCentered{%
$$
\vbox\bgroup
\offinterlineskip
\tabskip = 0pt
\halign\bgroup
\def\TableEndCentered{%
\crcr
\egroup
\egroup
$$
\NameDef{@InputD-tabcent.tip}{}
\catcode`\@ = 11
\newbox\@WidthSavingBox
\def\WidthSavingBox #1#2{%
\setbox\@WidthSavingBox = \hbox{#1}%
\MaxDimen{#2}{#2}{\wd\@WidthSavingBox}{\global}%
\box\@WidthSavingBox
\catcode`\@ = 12
\NameDef{@InputD-tabswb.tip}{}
\catcode`\@ = 11
\newcount\@GenTocEntryLevel
\def\GenTocEntry #1#2#3#4{%
\par
\bgroup
\global\@GenTocEntryLevel = #1
\leftskip = #4
\parindent = #2
\advance\parindent by -#4
\dimen0 = #3
\advance\dimen0 by -#2
\@GenTocEntry
\def\@GenTocEntry #1#2#3#4#5#6#7#8{%
\rightskip = #1 plus 1in
\parfillskip = #2
\advance\parfillskip by -#1
#7
\ifdim #3 > 0pt
\setbox0 = \hbox to #3{\hfil.\hfil}
\else
\setbox0 = \box\voidb@x
\fi
\leavevmode
\hbox to \dimen0 {#5\hfil}%
{%
#6%
\unskip
}%
\ifvoid 0
\hfill
\else
\nobreak\leaders\copy0\hskip #4plus 1fil
\fi
#8%
\par
\egroup
\catcode`\@ = 12
\NameDef{@InputD-toc-mac.tip}{}
\def\Today{%
\the\month/\the\day/\the\year
\NameDef{@InputD-today.tip}{}
\catcode`\@ = 11
\def\EndInsertTopInsFix{%
\ifdim\dp0 > 10pt
\wlog{\string\endinsert: \string\topinsert
material deeper than 10pt}%
\dp0 = 10pt
\fi
\MaxDimen{\dimen0}{\dp0}{0pt}{}
\dimen1 = \vsize
\advance\dimen1 by -\dimen0
\advance\dimen1 by -12pt
\ifdim\ht0 > \dimen1
\wlog{\string\endinsert: \noexpand\topinsert
material too long (\the\ht0),}%
\wlog{\EightSpaces shortened to \the\dimen1.}%
\ht0 = \dimen1
\fi
\catcode`\@ = 12
\NameDef{@InputD-topinfix.tip}{}
\def\Bref #1#2#3{%
#1 (19#2#3)%
\NameDef{@InputD-ts-brefm.tip}{}
\def\td{%
\hskip 0.5em plus 0.1em minus 0.1em
$\bullet$%
\hskip 0.5em plus 0.1em minus 0.1em
\NameDef{@InputD-ts-bul.tip}{}
\def\ChapterHeadingTeXIP #1#2{%
\setbox 1 =
\vbox to 13pc{
\hyphenpenalty = 10000
\parindent = 0pt
\huge
\bf
\baselineskip = 21pt
\AlwaysBaselineskip
\setbox 0 = \hbox{#1}%
\copy0
\parskip = 3pc
\advance\parskip by -\dp0
\advance\parskip by -\ht0
\advance\parskip by -\baselineskip
\wlog{\string\ChapterHeadingTeXIP: computed value
of \noexpand\parskip is \the\parskip.}%
\spaceskip = 0.3333em
\xspaceskip = \spaceskip
\rightskip = 0pt plus 4em
#2
\par
\vfil
}
\box 1
\SuppressNextParIndent
\NameDef{@InputD-ts-chhe.tip}{}
\catcode`\@ = 11
\NewCounter{ChapterNo}{\arabic}%
{\TheCounter{ChapterNo}}{\TheCounter{ChapterNo}}
\def\Chapter{\DblArg{\@Chapter}}%
\def\@Chapter [#1]#2{%
\ShouldBeRightHandPage
\StepCounter{ChapterNo}%
\gdef\@LeftRunningHead{#2}%
\SetPageLayout{4}
\ChapterHeadingTeXIP{\PrintCounter{ChapterNo}}{#2}
\WriteToAuxSpecial{toc}{1}%
{\PrintCounter{ChapterNo}}{#1}{\PrintCounter{PageNo}}%
\WriteToAuxSpecial{lof}{0}{}{}{}%
\WriteToAuxSpecial{lot}{0}{}{}{}%
\def\Label ##1{\@Label{##1}{\RefCounter{ChapterNo}}{1}}%
\NewCounter{AppendixNo}{\Alph}%
{\TheCounter{AppendixNo}}{\TheCounter{AppendixNo}}
\AddCounterToResetList{SectionNo}{AppendixNo}
\AddCounterToResetList{AppendixNo}{VolumeNo}
\def\Appendix{\DblArg{\@Appendix}}%
\def\@Appendix [#1]#2{%
\NewPageRightHand
\StepCounter{AppendixNo}%
\ReassignCounter{SectionNo}{\arabic}%
{\PrintCounter{AppendixNo}.\TheCounter{SectionNo}}%
{\PrintCounter{AppendixNo}.\TheCounter{SectionNo}}%
\SetPageLayout{4}
\ChapterHeadingTeXIP{Appendix \PrintCounter{AppendixNo}}{#2}
\WriteToAuxSpecial{toc}{1}%
{\PrintCounter{AppendixNo}}{#1}{\PrintCounter{PageNo}}%
\def\Label ##1{\@Label{##1}{\RefCounter{AppendixNo}}{1}}%
\ignorespaces
\def\DoneWithAppendices{%
\ReassignCounter{SectionNo}{\alph}%
{\TheCounter{ChapterNo}.\TheCounter{SectionNo}}%
{\TheCounter{ChapterNo}.\TheCounter{SectionNo}}
\def\Label ##1{\@Label{##1}{\RefCounter{ChapterNo}}{1}}%
\catcode`\@ = 12
\NameDef{@InputD-ts-chap.tip}{}
\catcode`\@ = 11
\def\@PageRef #1{%
\def\@PageRefResult{}%
\@ref{1}{#1}%
\if\StringsEqualConditional{\@TheExpandedLabel}{??}%
\def\@PageRefResult{??}%
\else
\if\PrefixConditional{\@TheExpandedLabel}%
{\TheCounter{VolumeNo}-}%
\DropPrefix{\@TheExpandedLabel}{\TheCounter{VolumeNo}-}%
{\@TheShortenedLabel}%
\edef\@PageRefResult{\@TheShortenedLabel}%
\else
\edef\@PageRefResult{\@TheExpandedLabel}%
\fi
\fi
\catcode`\@ = 12
\NameDef{@InputD-ts-pager.tip}{}
\catcode`\@ = 11
\newcount\@PageRefLimitLow
\newcount\@PageRefLimitHigh
\newif\if@CloseByReference
\newcount\@PageCloseRefCount
\newcount\@PageNumberActual
\def\NoSpecialPageRef{%
\global\@NoSpecialPageReftrue
\newif\if@NoSpecialPageRef
\@NoSpecialPageReffalse
\def\@PageRef #1{%
\def\@PageRefResult{}%
\global\@CloseByReferencefalse
\StepCounter{CloseByReferenceCount}%
\CounterToRegister{\global\@PageCloseRefCount}%
{CloseByReferenceCount}%
\@ref{1}{#1}%
\if\StringsEqualConditional{\@TheExpandedLabel}{??}%
\def\@PageRefResult{??}%
\else
\if\PrefixConditional
{\@TheExpandedLabel}%
{\TheCounter{VolumeNo}-}%
\DropPrefix{\@TheExpandedLabel}{\TheCounter{VolumeNo}-}%
{\@TheShortenedLabel}%
\def\@PageRefResult{\@TheShortenedLabel}%
\Label{@READ@-%
\@ThisLabel-\the\@PageCloseRefCount}%
\@PageRefLimitLow = \@TheShortenedLabel
\advance\@PageRefLimitLow by -1
\@PageRefLimitHigh = \@TheShortenedLabel
\advance\@PageRefLimitHigh by 1
\edef\@Ref@Temp@Name{%
\@LabelRefPrefix @READ@-%
\@ThisLabel-\the\@PageCloseRefCount
}%
\if\NameDefinedConditional{\@Ref@Temp@Name}%
\edef\@Ref@Temp@NameTwo{%
\NameUse{\@Ref@Temp@Name}%
}%
\wlog{@READ@: 1 \@Ref@Temp@Name /
\@Ref@Temp@NameTwo}%
\edef\@Ref@Temp@NameThree{%
\expandafter\PickSecondOfTwo
\@Ref@Temp@NameTwo
}%
\wlog{@READ@ 1a: \@Ref@Temp@NameThree}%
\DropPrefix
{\@Ref@Temp@NameThree}%
{\TheCounter{VolumeNo}-}%
{\@ResultLocalRef}%
\@PageNumberActual = \@ResultLocalRef
\else
\wlog{@READ@ 2}%
\@PageNumberActual = \count0
\@PageRefLimitLow = -10
\@PageRefLimitHigh = -10
\fi
\if\InRangeConditional
{\@PageNumberActual}%
{\@PageRefLimitLow}%
{\@PageRefLimitHigh}%
\wlog{@READ@ 3}%
\@CloseByReferencetrue
\if@NoSpecialPageRef
\@CloseByReferencefalse
\fi
\else
\wlog{@READ@ 4}%
\@CloseByReferencefalse
\fi
\global\@NoSpecialPageReffalse
\if@CloseByReference
\ifnum\@PageNumberActual = \@PageRefLimitLow
\wlog{\string\PageRef: Reference "\@ThisLabel,"
on page \the\@PageNumberActual
\space refers to the next page.}%
\def\@PageRefResult{the next}%
\fi
\ifnum\@PageNumberActual = \@TheShortenedLabel
\wlog{\string\PageRef: Reference "\@ThisLabel"
on page \the\@PageNumberActual
\space refers to the current page.}%
\def\@PageRefResult{this}%
\fi
\ifnum\@PageNumberActual = \@PageRefLimitHigh
\wlog{\string\PageRef: Reference "\@ThisLabel"
on page \the\@PageNumberActual
\space refers to the preceding page.}%
\def\@PageRefResult{the previous}%
\fi
\fi
\else
\def\@PageRefResult{\@TheExpandedLabel}%
\fi
\fi
\edef\@PageRefResult{\@PageRefResult}%
\catcode`\@ = 12
\NameDef{@InputD-ts-page2.tip}{}
\catcode`\@ = 11
\def\PageRef #1{%
\@PageRef{#1}%
\@PageRefResult
\@PrintAfterLabel
\def\Page #1{%
\PageShortForm~\@PageRef{#1}%
\@PageRefResult
\@PrintAfterLabel
\def\OnPage #1{%
\@PageRef{#1}%
\if@CloseByReference
on \@PageRefResult\space page%
\else
on \PageShortForm~\@PageRefResult
\fi
\@PrintAfterLabel
\def\AtPage #1{%
\@PageRef{#1}%
\if@CloseByReference
at \@PageRefResult\space page%
\else
at \PageShortForm~\@PageRefResult
\fi
\@PrintAfterLabel
\def\CommaPage #1{%
\@PageRef{#1}%
\if@CloseByReference
\space on \@PageRefResult\space page%
\@PrintAfterLabel
\else
,\space
\PageShortForm~\@PageRefResult
\@PrintAfterLabel
\fi
\def\CommaPageComma{%
\@PageRef{,}%
\if@CloseByReference
\space on \@PageRefResult\space page\space
\else
,\space
\PageShortForm~\@PageRefResult
\@PrintAfterLabel
\space
\fi
\def\PageShortForm{p.}
\def\PagesShortForm{pp.}
\def\see #1#2{%
see \@SeeSee{#1}{#2}%
\def\See #1#2{%
See \@SeeSee{#1}{#2}%
\def\@SeeSee #1#2{%
\SectionRef{#1}%
\if\StringsEqualConditional{#2}{,}%
\CommaPageComma
\let\@SeeSeeEnd = \ignorespaces
\else
\CommaPage
#2%
\let\@SeeSeeEnd = \relax
\fi
\@SeeSeeEnd
\def\ChapterRef #1{%
Chapter~\Ref{#1}%
\def\SectionRef #1{%
\Ref{#1}%
\def\ItemRef #1{%
item~\Ref{#1}%
\def\FigRef #1{%
Fig.~\Ref{#1}%
\def\FigureRef #1{%
Figure~\Ref{#1}%
\def\TableRef #1{%
Table~\Ref{#1}%
\def\AppendixRef #1{%
Appendix~\Ref{#1}%
\def\PagesRef #1#2{%
\PagesShortForm~\PageRef{#1}--\PageRef{#2}%
\catcode`\@ = 12
\NameDef{@InputD-ts-crm.tip}{}
\newdimen\HsizeTeXIP
\newdimen\VsizeTeXIP
\newcount\ClubPenalty
\newcount\WidowPenalty
\newcount\InterlinePenalty
\newcount\BrokenPenalty
\NameDef{@InputD-ts-dime1.tip}{}
\newif\ifWritePageLog
\WritePageLogfalse
\newwrite\PageLogStream
\def\WritePageLogFile{%
\immediate\openout\PageLogStream = \jobname.plog
\WritePageLogtrue
\newcount\BadnessSave
\ShowPlainListsfalse
\catcode`\@ = 11
\newcount\@PageLayoutCode
\def\SetPageLayout #1{%
\global\@PageLayoutCode = #1
\CheckRange{\@PageLayoutCode}{0}{5}%
{\string\SetPageLayout: }
\SetPageLayout{0}%
\def\@LeftRunningHead{}
\def\@RightRunningHead{}
\newcount\@SavedPageLayoutCode
\def\NewPageRightHandSpecial{%
\vfill
\supereject
\ifodd\count0
\wlog{\string\NewPageRightHandSpecial: no empty
page to generate (\string\count0 = \the\count0)}%
\else
\hbox{}
\@SavedPageLayoutCode = \@PageLayoutCode
\SetPageLayout{1}%
\wlog{\string\NewPageRightHandSpecial: empty page
generated,
(\string\count0 = \the\count0).}%
\vfill
\eject
\SetPageLayout{\@SavedPageLayoutCode}%
\fi
\newdimen\OddPagesHorizontalShift
\newdimen\EvenPagesHorizontalShift
\newdimen\CurrentPageShift
\def\plainoutput{%
\@ShowPlainLists
\edef\@LeftRunningHead{\@LeftRunningHead}%
\edef\@RightRunningHead{\@RightRunningHead}%
\ifnum\@PageLayoutCode = 0
\else
\headline = {}
\footline = {}
\fi
\ifcase\@PageLayoutCode
\or
\or
\global\@PageLayoutCode = 3
\or
\@PageLayoutCodeThree
\or
\global\@PageLayoutCode = 5
\or
\ifodd\count0
\headline = {%
\small\rm
\hfil
\botmark
\hskip 18pt
\PrintCounter{PageNo}%
}%
\else
\headline = {%
\small\rm
\PrintCounter{PageNo}%
\hskip 18pt
\@LeftRunningHead
\hfil
}%
\fi
\else
\errmessage{\string\plainoutput: \string\@PageLayoutCode
out of range.}%
\fi
\setbox 4 = \vbox{%
\pagebody
}%
\ifWritePageLog
\immediate\write\PageLogStream{%
Part name: \CurrentPartName, Page \the\count0
}%
\immediate\write\PageLogStream{%
Page \the\count0:
stretch: \the\pagestretch,
shrink: \the\pageshrink,
outputpenalty: \the\outputpenalty
}%
\immediate\write\PageLogStream{%
pagefilstretch: \the\pagefilstretch,
pagefillstretch: \the\pagefillstretch
}%
\immediate\write\PageLogStream{%
ht 255: \the\ht255,
dp 255: \the\dp255
}%
\NaturalHeight{\dimen0}{255}%
\NaturalDepth{\dimen1}{255}%
\immediate\write\PageLogStream{%
Natural height: \the\dimen0,
Natural depth: \the\dimen1
}%
\dimen2 = \vsize
\advance\dimen2 by -\dimen0
\immediate\write\PageLogStream{%
Ideal height: \the\vsize,
Difference: \the\dimen2
}%
\immediate\write\PageLogStream{%
badness: \the\BadnessSave,
height: \the\ht4,
depth: \the\dp4
}%
\immediate\write\PageLogStream{}%
\fi
\setbox 5 = \vbox{%
\makeheadline
\box 4
\makefootline
}%
\@MakeRobustMacros
\ifodd\count0
\CurrentPageShift = \OddPagesHorizontalShift
\else
\CurrentPageShift = \EvenPagesHorizontalShift
\fi
\wlog{Redefined \string\plainoutput (ts-outpu.tip):
Shifting: shift amount is \the\CurrentPageShift\space\space
(page is \the\pageno).}%
\setbox 6 = \vbox{%
\moveright\CurrentPageShift \box5
}%
\shipout\box6
\advancepageno
\ifnum\outputpenalty > -10000
\else
\dosupereject
\fi
\def\@PageLayoutCodeThree{%
\ifodd\count0
\headline = {%
\small\rm
\hfil
\@RightRunningHead
\hskip 18pt
\PrintCounter{PageNo}%
}%
\else
\headline = {%
\small\rm
\PrintCounter{PageNo}%
\hskip 18pt
\@LeftRunningHead
\hfil
}%
\fi
\catcode`\@ = 12
\NameDef{@InputD-ts-outpu.tip}{}
\def\SetUpTeXIPValues #1#2#3#4#5#6#7#8#9{%
\HsizeTeXIP = #1\relax
\hsize = \HsizeTeXIP
\VsizeTeXIP = #2\relax
\vsize = \VsizeTeXIP
\SetParIndent{20pt}
\ClubPenalty = #4\relax
\clubpenalty = \ClubPenalty
\WidowPenalty = #5\relax
\widowpenalty = \WidowPenalty
\InterlinePenalty = #6\relax
\interlinepenalty = \InterlinePenalty
\BrokenPenalty = #7\relax
\brokenpenalty = \BrokenPenalty
\OddPagesHorizontalShift = 0pt
\EvenPagesHorizontalShift = 0pt
\overfullrule = #8\relax
\parskip = #9\relax
\SetUpTeXIPValues{6.5in}{8.9in}{20pt}{100}{100}{100}{100}%
{5pt}{0pt plus 1pt}
\NameDef{@InputD-ts-dime2.tip}{}
\def\SubstituteFont #1#2#3#4{%
\expandafter\newifOF \csname if-\string#1\endcsname
\csname if-\string#1true\endcsname
\def#1{%
\csname if-\string#1\endcsname
\message{%
\string\SubstituteFont: No \string#2 font at
size #3pt, using \noexpand\rm instead.%
}%
\global\csname if-\string#1false\endcsname
\fi
#4%
}%
\NameDef{@InputD-ts-subst.tip}{}
\font\RmLargerThanLife = cmr17 scaled \magstep5
\NewFont\Vrm = cmr5
\NewFont\Vit = cmti7 at 5pt
\NewFont\Vbf = cmbx5
\NewFont\Vsc = cmcsc10 at 5pt
\SubstituteFont{\Vtt}{\tt}{7}{\VIIrm}
\SubstituteFont{\Vsc}{\sc}{7}{\VIIrm}
\SubstituteFont{\Vsl}{\sl}{7}{\VIIrm}
\NewFont\VIIrm = cmr7
\NewFont\VIIit = cmti7
\NewFont\VIIbf = cmbx7
\NewFont\VIIsc = cmcsc10 at 7pt
\SubstituteFont{\VIItt}{\tt}{7}{\VIIrm}
\SubstituteFont{\VIIsl}{\sl}{7}{\VIIrm}
\NewFont\VIIIrm = cmr8
\NewFont\VIIIit = cmti8
\NewFont\VIIIbf = cmbx8
\NewFont\VIIItt = cmtt8
\NewFont\VIIIsc = cmcsc10 at 8pt
\SubstituteFont{\VIIIsl}{\sl}{8}{\VIIIrm}
\NewFont\IXrm = cmr9
\NewFont\IXit = cmti9
\NewFont\IXbf = cmbx9
\NewFont\IXtt = cmtt9
\NewFont\IXsc = cmcsc10 at 9pt
\SubstituteFont{\IXsl}{\sl}{9}{\IXrm}
\NewFont\Xrm = cmr10
\NewFont\Xit = cmti10
\NewFont\Xbf = cmbx10
\NewFont\Xtt = cmtt10
\NewFont\Xsc = cmcsc10
\NewFont\Xsl = cmcsc10
\NewFont\XIIrm = cmr12
\NewFont\XIIit = cmti12
\NewFont\XIIbf = cmbx12
\NewFont\XIItt = cmtt12
\NewFont\XIIsc = cmcsc10 scaled \magstep 1
\NewFont\XIIsl = cmcsc10 scaled \magstep 1
\NewFont\XIIIrm = cmr12 scaled \magstephalf
\NewFont\XIIIit = cmti12 scaled \magstephalf
\NewFont\XIIIbf = cmbx12 scaled \magstephalf
\NewFont\XIIItt = cmtt12 scaled \magstephalf
\NewFont\XIIIsc = cmcsc10 scaled \magstephalf
\NewFont\XIIIsl = cmcsc10 scaled \magstephalf
\NewFont\XVIIrm = cmr12 scaled \magstep 2
\NewFont\XVIIit = cmti12 scaled \magstep 2
\NewFont\XVIIbf = cmbx12 scaled \magstep 2
\NewFont\XVIItt = cmtt12 scaled \magstep 2
\NewFont\XVIIsc = cmcsc10 scaled \magstep 3
\NewFont\XVIIsl = cmcsc10 scaled \magstep 3
\NewFont\XXIrm = cmr17 scaled \magstep 1
\NewFont\XXIit = cmti12 scaled \magstep 3
\NewFont\XXIbf = cmbx12 scaled \magstep 3
\NewFont\XXIsc = cmcsc10 scaled \magstep 4
\LoadFontOnDemand{\XXItt}{cmtt12 scaled \magstep 3}
\SubstituteFont{\XXIsl}{\sl}{20.74}{\XXIrm}
\NewFont\XXVrm = cmr17 scaled \magstep 2
\NewFont\XXVit = cmti12 scaled \magstep 4
\NewFont\XXVbf = cmbx12 scaled \magstep 4
\NewFont\XXVsc = cmcsc10 at 5pt
\LoadFontOnDemand{\XXVtt}{cmtt12 scaled \magstep 4}
\SubstituteFont{\XXVsl}{\sl}{20.74}{\XXVrm}
\DefineFontSizeGroup{V}{5}
\DefineFontSizeGroup{VII}{7}
\DefineFontSizeGroup{VIII}{8}
\DefineFontSizeGroup{IX}{9}
\DefineFontSizeGroup{X}{10}
\DefineFontSizeGroup{XII}{12}
\DefineFontSizeGroup{XIII}{13.14}
\DefineFontSizeGroup{XVII}{17.28}
\DefineFontSizeGroup{XXI}{20.74}
\DefineFontSizeGroup{XXV}{24.88}
\let\tiny = \FontSizeV
\let\scriptsize = \FontSizeVII
\let\footnotesize = \FontSizeVIII
\let\small = \FontSizeIX
\let\normalsize = \FontSizeX
\let\large = \FontSizeXII
\let\Large = \FontSizeXIII
\let\LARGE = \FontSizeXVII
\let\huge = \FontSizeXXI
\let\Huge = \FontSizeXXV
\def\LineSpaceMultFactor{1.2}
\normalsize
\NameDef{@InputD-ts-fonts.tip}{}
\catcode`\@ = 11
\newcount\@WidestLoopCounter
\newbox\@WidestLoopBox
\def\FindWidestChar #1#2#3#4{%
#1 = 0pt
\DoLoop{\@WidestLoopCounter}{#3}{1}{#4}{%
\setbox\@WidestLoopBox = \hbox{%
#2%
\char\@WidestLoopCounter
}%
\MaxDimen{#1}{#1}{\wd\@WidestLoopBox}{}%
}%
\catcode`\@ = 12
\NameDef{@InputD-widestc.tip}{}
\catcode`\@ = 11
\newdimen\@WidthLevelOneLabels
\FindWidestChar{\@WidthLevelOneLabels}{\normalsize\rm}%
{`\0}{`\9}
\setbox 0 = \hbox{.\hskip 1em}
\advance\@WidthLevelOneLabels by \wd0
\def\@BeginEnumerateLevelOne{%
\BeginAList{\@WidthLevelOneLabels}{0pt}{1em}%
{12pt}{0pt}%
{0pt}{15pt}%
\newdimen\@WidthLevelTwoLabels
\FindWidestChar{\@WidthLevelTwoLabels}{\normalsize\rm}%
{`\a}{`\j}
\setbox 0 = \hbox{()\hskip 1em}
\advance\@WidthLevelTwoLabels by \wd0
\def\@BeginEnumerateLevelTwo{%
\BeginAList{\@WidthLevelTwoLabels}{0pt}{10pt}%
{6pt}{0pt}%
{0pt}{15pt}%
\newdimen\@WidthLevelThreeLabels
\setbox 0 = \hbox{viii.\hskip 1em}
\@WidthLevelThreeLabels = \wd0
\def\@BeginEnumerateLevelThree{%
\BeginAList{\@WidthLevelThreeLabels}{0pt}{10pt}%
{6pt}{0pt}%
{0pt}{15pt}%
\newdimen\@WidthLevelFourLabels
\FindWidestChar{\@WidthLevelFourLabels}{\normalsize\rm}%
{`\A}{`\J}
\setbox0 = \hbox{()\hskip 1em}
\advance\@WidthLevelFourLabels by \wd0
\def\@BeginEnumerateLevelFour{%
\BeginAList{\@WidthLevelFourLabels}{0pt}{10pt}%
{6pt}{0pt}%
{0pt}{15pt}%
\def\EnumerateLevelOneExtended{%
\par
\FindWidestChar{\@WidthLevelOneLabels}{\normalsize\rm}%
{`\0}{`\9}
\multiply\@WidthLevelOneLabels by 2
\setbox 0 = \hbox{.\hskip 1em}%
\advance\@WidthLevelOneLabels by \wd0
\catcode`\@ = 12
\NameDef{@InputD-ts-enum.tip}{}
\catcode`\@ = 11
\NewCounter{FigureNo}{\arabic}%
{\TheCounter{ChapterNo}.\TheCounter{FigureNo}}%
{\TheCounter{ChapterNo}.\TheCounter{FigureNo}}%
\NewCounter{TableNo}{\arabic}%
{\TheCounter{ChapterNo}.\TheCounter{TableNo}}%
{\TheCounter{ChapterNo}.\TheCounter{TableNo}}%
\AddCounterToResetList{FigureNo}{ChapterNo}
\AddCounterToResetList{TableNo}{ChapterNo}
\def\Caption{\DblArg{\@Caption}}
\def\@Caption [#1]#2{%
\errmessage{\string\@Caption: caption out of place, caption
text = #1.}%
\def\BeginFigure{%
\DoFutureLet{\ifx}{[}{\@BeginFigure}{\@BeginFigure[t]}%
\newif\if@FigureInsertOk
\def\@BeginFigure[#1]{%
\begingroup
\def\@UseThisInsert{}%
\@FigureInsertOkfalse
\if\StringsEqualConditional{#1}{t}%
\def\@UseThisInsert{\topinsert}%
\@FigureInsertOktrue
\fi
\if\StringsEqualConditional{#1}{p}%
\def\@UseThisInsert{\pageinsert}%
\@FigureInsertOktrue
\fi
\if@FigureInsertOk
\else
\errmessage{\string\@BeginFigure: illegal argument
"#1." Use [t] instead.}%
\def\@UseThisInsert{\topinsert}%
\fi
\gdef\FigureCaptionText{}%
\gdef\FigureCaptionTextLof{}%
\StepCounter{FigureNo}%
\def\Label ##1{\@Label{##1}{\RefCounter{FigureNo}}{0}}%
\def\@Caption [##1]##2{%
\gdef\FigureCaptionTextLof{##1}%
\gdef\FigureCaptionText{##2}%
\wlog{\noexpand\@Caption (figures), caption text saved:
##2.}%
}%
\setbox 0 = \vbox\bgroup
\def\EndFigure{%
\egroup
\@UseThisInsert
\box0
\if\EmptyStringConditional{\FigureCaptionText}%
\else
\bigskip
\CenterOrParagraph{%
\small
Figure~\PrintCounter{FigureNo}.
\FigureCaptionText
}%
\WriteToAuxSpecial{lof}{1}{\PrintCounter{FigureNo}}%
{\FigureCaptionTextLof}{\PrintCounter{PageNo}}%
\fi
\endinsert
\endgroup
\def\BeginTable{%
\begingroup
\gdef\TableCaptionText{}%
\gdef\TableCaptionTextLot{}%
\StepCounter{TableNo}%
\def\Label ##1{\@Label{##1}{\RefCounter{TableNo}}{0}}%
\def\@Caption [##1]##2{%
\gdef\TableCaptionText{##2}%
\gdef\TableCaptionTextLot{##1}%
\wlog{\noexpand\@Caption for tables: ##2}%
}%
\setbox 0 = \vbox\bgroup
\def\EndTable{%
\egroup
\topinsert
\if\EmptyStringConditional{\TableCaptionText}%
\else
\smallskip
\CenterOrParagraph{%
\small
Table~\PrintCounter{TableNo}.
\TableCaptionText}%
\WriteToAuxSpecial{lot}{1}{\PrintCounter{TableNo}}%
{\TableCaptionTextLot}{\PrintCounter{PageNo}}%
\smallskip
\fi
\box0
\endinsert
\endgroup
\catcode`\@ = 12
\NameDef{@InputD-ts-float.tip}{}
\catcode`\@ = 11
\NewCounter{FootNote}{\arabic}%
{\TheCounter{FootNote}}%
{\PrintCounter{FootNote}}
\AddCounterToResetList{FootNote}{ChapterNo}
\def\FootNote #1{%
\StepCounter{FootNote}%
\footnote{$^{\PrintCounter{FootNote}}$}%
{%
\small
\baselineskip = 9pt
#1%
}%
\skip\footins = 18.4pt
\def\@PrintFootnotePlain{%
\vskip 12pt plus 2pt minus 1pt
\hrule width 5pc height 0.4pt depth 0pt
\vskip 6pt plus 1pt minus 0.5pt
\unvbox\footins
\catcode`\@ = 12
\NameDef{@InputD-ts-foot.tip}{}
\NewCounter{VolumeNo}{\Roman}%
{\TheCounter{VolumeNo}}{\TheCounter{VolumeNo}}
\ReassignCounter{PageNo}{\arabic}%
{\TheCounter{PageNo}}%
{\TheCounter{VolumeNo}-\TheCounter{PageNo}}
\NameDef{@InputD-ts-vol.tip}{}
\catcode`\@ = 11
\NewCounter{SectionNo}{\arabic}%
{\PrintCounter{ChapterNo}.\TheCounter{SectionNo}}%
{\PrintCounter{ChapterNo}.\TheCounter{SectionNo}}%
\NewCounter{SubSectionNo}{\arabic}%
{\PrintCounter{SectionNo}.\TheCounter{SubSectionNo}}%
{\PrintCounter{SectionNo}.\TheCounter{SubSectionNo}}%
\NewCounter{SubSubSectionNo}{\arabic}%
{\PrintCounter{SubSectionNo}.\TheCounter{SubSubSectionNo}}%
{\PrintCounter{SubSectionNo}.\TheCounter{SubSubSectionNo}}%
\NewCounter{CloseByReferenceCount}{\arabic}%
{\PrintCounter{CloseByReferenceCount}}%
{\PrintCounter{CloseByReferenceCount}}%
\AddCounterToResetList{SectionNo}{ChapterNo}%
\AddCounterToResetList{SubSectionNo}{SectionNo}%
\AddCounterToResetList{SubSubSectionNo}{SubSectionNo}%
\def\Section{\DblArg{\@Section}}%
\def\@Section [#1]#2{%
\StepCounter{SectionNo}%
\def\Label ##1{\@Label{##1}{\RefCounter{SectionNo}}{1}}%
\GenericHeading{2}{36pt plus 10pt minus 2pt}%
{1}{1}{1}{24pt}{0}%
{\Large\baselineskip = 15pt}{-13pt}%
{\PrintCounter{SectionNo}}{#2}{#1}%
\gdef\EveryParB{%
{%
\@MakeRobustMacros
\def\LineBreakToc{ }%
\def\LineBreakHeading{ }%
\def\IgnoreInRunningHead ####1{%
\relax$\ldots$%
}%
\mark{#2}%
}%
}%
\def\SubSection{\DblArg{\@SubSection}}%
\def\@SubSection [#1]#2{%
\StepCounter{SubSectionNo}%
\def\Label ##1{\@Label{##1}{\RefCounter{SubSectionNo}}{1}}%
\GenericHeading{3}{30pt plus 8pt minus 2pt}%
{1}{1}{1}{18pt}{0}%
{\large\baselineskip = 14pt}{-12pt}%
{\PrintCounter{SubSectionNo}}{#2}{#1}%
\def\SubSubSection{\DblArg{\@SubSubSection}}%
\def\@SubSubSection [#1]#2{%
\ifnum\TheCounter{SubSectionNo} = 0
\errhelp = {The reason is probably that \string\Section
occurred directly followed by \string\SubSubSection
(that is you forgot a \string\SubSection in between).}%
\errmessage{\string\@SubSubSection: Counter "SubSectionNo"
is zero.}%
\fi
\StepCounter{SubSubSectionNo}%
\def\Label ##1{\@Label{##1}{\RefCounter{SubSubSectionNo}}{1}}%
\GenericHeading{4}{24pt plus 6pt minus 1pt}%
{1}{1}{1}{18pt}{0}%
{\normalsize}{-10pt}%
{\PrintCounter{SubSubSectionNo}}{#2}{#1}%
\catcode`\@ = 12
\NameDef{@InputD-ts-shead.tip}{}
\NameDef{@InputD-ts-hall.tip}{}
\catcode`\@ = 11
\def\label{\Label}
\def\WriteCountersToAuxFile{%
\@WriteCounter{VolumeNo}%
\@WriteCounter{ChapterNo}%
\@WriteCounter{AppendixNo}%
\@WriteCounter{SectionNo}%
\@WriteCounter{SubSectionNo}%
\@WriteCounter{SubSubSectionNo}%
\@WriteCounter{PageNo}%
\@WriteCounter{SWPageNo}%
\@WriteCounter{FigureNo}%
\@WriteCounter{TableNo}%
\@WriteCounter{CloseByReferenceCount}%
\def\Label #1{%
\message{\noexpand\Label currently undefined,
label "#1" ignored.}%
\catcode`\@ = 12
\NameDef{@InputD-ts-hmore.tip}{}
\lefthyphenmin = 2
\righthyphenmin = 3
\hyphenation{Ado-be}
\hyphenation{after}
\hyphenation{base-line-skip}
\hyphenation{man-u-script}
\hyphenation{obey-lines}
\hyphenation{obey-spaces}
\hyphenation{other-wise}
\NameDef{@InputD-ts-hyph.tip}{}
\catcode`\@ = 11
\def\@BeginItemizeLevelOne{%
\BeginAList
{15pt}{0pt}{15pt}%
{12pt}{0pt}%
{0pt}{15pt}%
\def\@BeginItemizeLevelTwo{%
\BeginAList
{15pt}{0pt}{15pt}%
{6pt}{0pt}%
{0pt}{15pt}%
\def\@BeginItemizeLevelThree{%
\BeginAList
{15pt}{0pt}{15pt}%
{4pt}{0pt}%
{0pt}{15pt}%
\def\@BeginItemizeLevelFour{%
\BeginAList
{15pt}{0pt}{15pt}%
{4pt}{0pt}%
{0pt}{15pt}%
\catcode`\@ = 12
\NameDef{@InputD-ts-itize.tip}{}
\def\TeXIP{%
\TeX{} in Practice%
\def\WEB{%
{\tt WEB}%
\NameDef{@InputD-ts-lazy.tip}{}
\def\EntryIntolof #1#2#3#4{%
\ifcase #1
\MaxVskip{12pt}%
\or
\GenTocEntry{#1}{10pt}{50pt}{50pt}{25pt}%
{0pt}{5pt}{0.5in}{#2}{#3}{\rm}{#4}
\else
\errmessage{\string\EntryIntolof/lot: illegal level.}%
\fi
\let\EntryIntolot = \EntryIntolof
\NameDef{@InputD-ts-loft.tip}{}
\def\PS{{\sc Post\-Script}}
\font\MetafontLogoFont = logo10 scaled \magstep0
\def\MF{{\MetafontLogoFont METAFONT}}
\def\textfontii{\the\textfont2}
\def\AmSTeX{{\textfontii A}\kern-.1667em\lower.5ex\hbox
{\textfontii M}\kern-.125em{\textfontii S}-\TeX}
\def\LaTeX{{\rm L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em
T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
\NameDef{@InputD-ts-logo.tip}{}
\catcode`\@ = 11
\def\@MakeRobustMacros{%
\TreatAsRobust\rm
\TreatAsRobust\bf
\TreatAsRobust\it
\TreatAsRobust\tt
\TreatAsRobust\sc
\TreatAsRobust\mac
\TreatAsRobust\break
\TreatAsRobust\dots
\TreatAsRobust\MF
\TreatAsRobust\TeX
\TreatAsRobust\LaTeX
\TreatAsRobust\PS
\TreatAsRobust\AmSTeX
\TreatAsRobust\ldots
\TreatAsRobust\cdots
\TreatAsRobust\dots
\def\MakeRobust ##1{%
\noexpand\MakeRobust
\noexpand##1%
}%
\catcode`\@ = 12
\NameDef{@InputD-ts-robst.tip}{}
\def\TeXIPVersionNumber{1.0}
\NameDef{@InputD-ts-vers.tip}{}
\def\MyNarrower{\narrower\narrower}
\frenchspacing
\NameDef{@InputD-ts-set.tip}{}
\def\EntryIntotoc #1#2#3#4{%
\par
\ifcase #1
\bigskip
\or
\bigskip
\else
\relax
\fi
\ifcase #1
\GenTocEntry{0}{0pt}{20pt}{20pt}{30pt}%
{0pt}{5pt}{0.5in}{#2}{#3}{\rm}{#4}
\or
\GenTocEntry{1}{0pt}{40pt}{40pt}{30pt}%
{0pt}{10pt}{0.5in}{#2}{#3}{\bf}{#4}
\or
\GenTocEntry{2}{10pt}{50pt}{50pt}{30pt}%
{0pt}{5pt}{0.5in}{#2}{#3}{\rm}{#4}
\or
\GenTocEntry{#1}{20pt}{60pt}{60pt}{30pt}%
{0pt}{5pt}{0.5in}{#2}{#3}{\rm}{#4}
\or
\else
\errmessage{\string\EntryIntotoc: no level #1 subdivision
in this series.}
\fi
\NameDef{@InputD-ts-toc.tip}{}
\newdimen\LeftSkipVerbatim
\LeftSkipVerbatim = 0.3in
\def\VerbatimFont{\tt}
\newcount\VerbatimTab
\VerbatimTab = 8
\newif\ifVerbLineNum
\VerbLineNumtrue
\newskip\DisplayVerbatimVskip
\DisplayVerbatimVskip = 0pt plus 2pt minus 1pt
\newif\ifCaretTab
\CaretTabfalse
\newtoks\VerbatimTokBegin \VerbatimTokBegin = {}
\newtoks\VerbatimTokLine \VerbatimTokLine = {}
\newtoks\VerbatimTokEnd \VerbatimTokEnd = {}
\catcode`\@ = 11
\newdimen\@VerbatimLr
\@VerbatimLr = 1.5pt
\newif\if@IgnoreFirstNewLine
\if\FormatIsLaTeXConditional
\def\@VerbatimPar{\par\@@par}%
\def\@VerbatimNlf{\tiny}%
\else
\def\@VerbatimPar{\par}%
\def\@VerbatimNlf{\tiny}%
\newcount\@VerbatimLineNumber
\newif\if@VerbatimL
\newdimen\Verb@TabSize
\def\@VObeySpaces{%
\MakeActive{\ }%
\@@VObeySpaces
\MakeActive{\ }%
\gdef\@@VObeySpaces{%
\def {\VerbControlSpace}%
\def\@VObeyTabs{%
\MakeTabActive
\@@VObeyTabs
\MakeTabActive
\gdef\@@VObeyTabs{%
\def^^I{\Verb@Tab}%
}
\def\Verb@Tab{%
\leavevmode
\egroup
\dimen0 = \wd0
\divide\dimen0 by \Verb@TabSize
\advance\dimen0 by 1sp
\multiply\dimen0 by \Verb@TabSize
\wd0 = \dimen0
\box0
\setbox 0 = \hbox\bgroup
\def\@VObeyEol{%
\MakeEolActive %
\@@VObeyEol
\MakeEolActive %
\gdef\@@VObeyEol{%
\let^^M = \Verb@Eol%
}%
\def\Verb@Eol{%
\if@IgnoreFirstNewLine
\else
\leavevmode
\egroup
\box 0
\endgraf
\fi
\@IgnoreFirstNewLinefalse
\def\@VCaret{%
\MakeActive{\^}%
\@@VCaret
\MakeActive{\^}%
\gdef\@@VCaret{%
\def^{%
\futurelet\@VSymbol\@@VCaretTwo
}%
\def\@@VCaretTwo{%
\ifx \@VSymbol^%
\let\@VerbNext = \@@VCaretThree
\else
\CaretText
\let\@VerbNext = \relax
\fi
\@VerbNext
}%
\def\@@VCaretThree ^{%
\futurelet\@VSymbol\@@VCaretFour
}%
\def\@@VCaretFour{%
\ifx \@VSymbol I%
\Verb@Tab
\else
\CaretText\CaretText\@VSymbol
\fi
\GobbleOne
}%
}%
\def\@StartVerbatim #1{%
\begingroup
\@VerbatimPar
\vskip\DisplayVerbatimVskip
\if\FormatIsLaTeXConditional
\else
\CancelSuppressNextParIndent
\fi
\setbox0 = \hbox{\VerbatimFont X}
\Verb@TabSize = \wd0
\multiply\Verb@TabSize by \VerbatimTab
\parskip = 0pt
\parindent = 0pt
\leftskip = \LeftSkipVerbatim
\rightskip = 0pt
\parfillskip = 0pt plus 1fil
\spaceskip = 0pt
\xspaceskip = 0pt
\VerbatimFont
\if@VerbatimL
\else
\global\@VerbatimLineNumber = 0
\fi
\global\@VerbatimLfalse
\ifnum #1 = 0
\@IgnoreFirstNewLinetrue
\else
\@IgnoreFirstNewLinefalse
\fi
\if\FormatIsLaTeXConditional
\everypar = {\EveryParZ}%
\fi
\def\EveryParZ{%
\the\VerbatimTokLine
\global\advance\@VerbatimLineNumber by 1
\ifVerbLineNum
\raise \@VerbatimLr \hbox to 0pt{%
\hss
\@VerbatimNlf
\the\@VerbatimLineNumber
\hskip 10pt
}%
\fi
\setbox 0 = \hbox\bgroup
}%
\MkOthers
\@VObeySpaces
\@VObeyTabs
\@VObeyEol
\ifCaretTab
\@VCaret
\fi
\def\@DoneVerbatim{%
\endgroup
\vskip\DisplayVerbatimVskip
\def\@VerbatimEndSpecialDeal{}%
\if\FormatIsLaTeXConditional
\else
\def\@VerbatimEndSpecialDeal{%
\ParLookAhead
{\SuppressNextParIndent}%
{}
}%
\fi
\@VerbatimEndSpecialDeal
\def\BeginVerbatim{%
\@StartVerbatim{0}%
\@BeginVerbatim
{ \catcode `| = 0 % | becomes escape character.
\catcode`\\ =12 % \ becomes regular character.
|gdef|@BeginVerbatim #1\EndVerbatim{%
#1%
|@DoneVerbatim
}
\def\BVerB{%
\@StartVerbatim{0}%
\@BVerB
\catcode `| = 0 % | becomes escape character.
\catcode`\\ =12 % \ becomes regular character.
|gdef|@BVerB #1\EVerB{%
#1%
|@DoneVerbatim
}
\def\AppendVerbatimL #1{%
\global\@VerbatimLtrue
\global\advance\@VerbatimLineNumber by #1\relax
\def\StartVerbatimL #1{%
\global\@VerbatimLtrue
\global\@VerbatimLineNumber = #1\relax
\newcount\@SaveVerbatimLineNumber
\def\PushVerbatimL{%
\global\@SaveVerbatimLineNumber = \@VerbatimLineNumber
\global\VerbLineNumfalse
\def\PopVerbatimL{%
\global\@VerbatimLineNumber = \@SaveVerbatimLineNumber
\global\VerbLineNumtrue
\catcode`\@ = 12
\NameDef{@InputD-verbdisp.tip}{}
\catcode`\@ = 11
\def\ListVerb #1{%
\@StartVerbatim{1}%
\input #1
\@DoneVerbatim
\def\ListVerbIfFileExists #1{%
\par
\if\FileExistsConditional{#1}%
\ListVerb{#1}%
\else
\centerline{$\bullet$ File {\tt #1} not found. $\bullet$}%
\wlog{\string\ListVerbIfFileExists: no file "#1".}%
\fi
\def\ListVerbAndSource #1{%
\ListVerb{#1}%
\input #1
\catcode`\@ = 12
\NameDef{@InputD-verb-mac.tip}{}
\catcode`\@ = 11
{\catcode`\ = \active
\gdef\@InitActiveSpace{\edef {\VerbControlSpace}}}
\newif\if@VerbSpaceControl
\def\Verb{%
\NextCharTest{*}{\@VerbSpaceControltrue \@VerbA}%
{\@VerbSpaceControlfalse\@VerbA}%
\def\@VerbA #1{%
\bgroup
\tt
\MkOthers
\if@VerbSpaceControl
\else
\catcode`\ = \active
\@InitActiveSpace
\fi
\def\@VerbTemp ##1#1{%
##1% % Simply print the argument.
\egroup % Undo font change and category code changes.
}%
\@VerbTemp
\catcode`\@ = 12
\NameDef{@InputD-verb.tip}{}
\catcode`\@ = 11
\newwrite\@VStream
\newif\if@VStreamOpen
\@VStreamOpenfalse
\newcount\@VerbWriteCount
\@VerbWriteCount = 0
\def\BeginVerbWrite #1#2{%
\global\advance\@VerbWriteCount by 1
\wlog{\string\BeginVerbWrite: [\the\@VerbWriteCount]}%
\DefaultArg{\@VerbWriteBaseName}{#1}{\jobname}%
\DefaultArg{\@VerbWriteFileExt}{#2}{ver}%
\xdef\@VerbWriteFileName{\@VerbWriteBaseName.\@VerbWriteFileExt}%
\if@VStreamOpen
\errmessage{\string\BeginVerbWrite: ERROR, file still open.}%
\fi
\OpenVerbWrFile{\@VerbWriteBaseName}{\@VerbWriteFileExt}%
{\@VStream}%
\global\@VStreamOpentrue
\BeginVerbWr{\@VStream}{\EndVerbWrite}%
\def\CloseVerbWriteFile{%
\if@VStreamOpen
\CloseVerbWrFile{\@VStream}%
\global\@VStreamOpenfalse
\fi
\def\AppendVerbWrite{%
\wlog{\string\AppendVerbWrite: [\the\@VerbWriteCount]}%
\if@VStreamOpen
\else
\errmessage{\string\AppendVerbWrite: no file open.}%
\fi
\xdef\@VerbWriteFileName{\@VerbWriteBaseName.\@VerbWriteFileExt}%
\BeginVerbWr{\@VStream}{\EndVerbWrite}%
\def\VerbAsVerb{%
\CloseVerbWriteFile
{%
\CaretTabtrue
\ListVerb{\@VerbWriteFileName}%
}%
\def\VerbAsSource{%
\CloseVerbWriteFile
\input \@VerbWriteFileName \relax
\catcode`\@ = 12
\NameDef{@InputD-vwrt-mac.tip}{}
\catcode`\@ = 11
\def\@btex{%
\par
\bgroup
\small
\def\@etex{%
\nobreak
\egroup
\if\FormatIsLaTeXConditional
\def\@EtexEnd{}%
\else
\def\@EtexEnd{%
\ParLookAhead
{}%
{\SuppressNextParIndent}%
}%
\fi
\@EtexEnd
\def\btex{%
\@btex
\@StartVerbatim{0}%
\btex@more
\catcode `| = 0 % | becomes escape character.
\catcode`\\ = 12 % \ now prints.
|gdef|btex@more #1\etex{%
#1%
|@DoneVerbatim
|@etex
}%
\catcode`\@ = 12
\NameDef{@InputD-ts-verb1.tip}{}
\catcode`\@ = 11
\def\Btexalt{%
\@btex
\@StartVerbatim{0}%
\btex@morealt
\catcode `| = 0 % | becomes escape character.
\catcode`\\ = 12 % \ now prints.
|gdef|btex@morealt #1\Etexalt{%
#1%
|@DoneVerbatim
|@etex
}%
\catcode`\@ = 12
\NameDef{@InputD-ts-verb2.tip}{}
\catcode`\@ = 11
\def\verb{\Verb}
\VerbLineNumtrue
\VerbatimTab = 4
\DisplayVerbatimVskip = 5pt
\def\VerbatimFont{\small\tt}%
\def\ListVerbTeXIP #1{%
\par
\medskip
\vskip 60pt
\vskip -60pt
\def\ListAsFileName{#1}%
\def\LabelName{code-#1}%
\if\SuffixConditional{#1}{.flf}%
\def\ListAsFileName ##1.flf{\def\ListAsFileName{##1.log}}%
\ListAsFileName #1%
\def\LabelName{}%
\else
\if\SuffixConditional{#1}{.flf2}%
\def\ListAsFileName ##1.flf2{\def\ListAsFileName{##1.log}}%
\ListAsFileName #1%
\def\LabelName{}%
\fi
\fi
\if\StringsEqualConditional{#1}{\jobname.ver}%
\def\ListAsFileName{}%
\def\LabelName{}%
\fi
\if\StringsEqualConditional{#1}{ex-verbwr.ver}
\def\LabelName{}%
\fi
\if\EmptyStringConditional{\LabelName}%
\else
\Label{code-#1}%
\fi
\if\EmptyStringConditional{\ListAsFileName}
\else
\centerline{%
$\bullet$%
\space
\tt\ListAsFileName
\space
$\bullet$%
}%
\fi
\@btex
\@StartVerbatim{1}%
\wlog{[\string\ListVerbTeXIP:}%
\input #1
\wlog{]}% svb: this was \message before
\@DoneVerbatim
\@etex
\catcode`\@ = 12
\NameDef{@InputD-ts-verb.tip}{}
\newif\ifIndexSpecial
\IndexSpecialfalse
\catcode`\@ = 11
\newwrite\IdxStream
\newwrite\IdxStreamSource
\newif\if@IndexFilesOpen
\@IndexFilesOpenfalse
\def\OpenIndexFiles #1{%
\if\EmptyStringConditional{#1}%
\gdef\@IndexFileBaseName{\jobname}%
\else
\gdef\@IndexFileBaseName{#1}%
\fi
\if@IndexFilesOpen
\message{\string\OpenIndexFiles: index files
already open.}%
\message{\string\OpenIndexFiles: will close
old files, open new ones with basename
"\@IndexFileBaseName".}%
\immediate\closeout\IdxStream
\immediate\closeout\IdxStreamSource
\fi
\@IndexFilesOpentrue
\immediate\openout\IdxStream = \@IndexFileBaseName.idx
\immediate\openout\IdxStreamSource = \@IndexFileBaseName.idx2
\SetIndexStream{\IdxStream}%
\def\CloseIndexFiles{%
\if@IndexFilesOpen
\immediate\closeout\IdxStream
\immediate\closeout\IdxStreamSource
\@IndexFilesOpenfalse
\fi
\def\SetIndexStream #1{%
\let\IdxStreamUse = #1%
\def\Index{%
\begingroup
\MkOthersNoCB
\@Index
\xdef\@IndexSuffixMod{}%
\def\@Index #1{%
\let\PrintCounter = \relax
\xdef\IndexTemp{%
\write\IdxStreamUse{%
\string\indexentry{#1\@IndexSuffixMod}%
{\PrintCounter{SWPageNo}}}%
}%
\ifIndexSpecial
\SideNoteText{I: #1}%
\fi
\xdef\@IndexSuffixMod{}%
\endgroup
\IndexTemp
\def\IndexP #1{%
\Index{#1}%
#1%
\def\IndexCS #1{%
\CSToString{\@IndexCSTemp}{#1}%
\expandafter\expandafter\expandafter
\Index{%
\@IndexCSTemp
@%
{%
\string\tt
\string\string
\string#1%
}%
}%
\def\IndexCSX #1{%
\CSToString{\@IndexCSTemp}{#1}%
\expandafter\expandafter\expandafter
\Index{%
#1%
@%
{%
\string\tt
\string\string
\Backslash#1%
}%
}%
\def\IndexCSP #1{%
\IndexCS{#1}%
{\tt\string#1}%
\def\IndexPrim #1{%
\CSToString{\@IndexCSTemp}{#1}%
\expandafter\expandafter\expandafter
\Index{\@IndexCSTemp @%
{\string\tt\string\string\string#1}|PRIMITIVE}%
\def\IndexPrimP #1{%
\IndexPrim{#1}%
{\tt\string #1}%
\def\IndexPar{\Index{par@\string\PrintParPrimitive}}
\def\PrintParPrimitive{\BackslashTt{\tt par}}
\def\IndexBye{\Index{bye@\string\PrintByePrimitive}}
\def\PrintByePrimitive{\BackslashTt{\tt bye}}
\def\IndexIf{\Index{if@\string\PrintIf|PRIMITIVE}}
\def\PrintIf{{\tt\string\if}}
\def\IndexElse{\Index{else@\string\PrintElse|PRIMITIVE}}
\def\PrintElse{{\tt\string\else}}
\def\IndexFi{\Index{fi@\string\PrintFi|PRIMITIVE}}
\def\PrintFi{{\tt\string\fi}}
\def\IndexIfCase{\Index{ifcase@\string\PrintIfCase|PRIMITIVE}}
\def\PrintIfCase{{\tt\string\ifcase}}
\def\IndexIfCat{\Index{ifcat@\string\PrintIfCat|PRIMITIVE}}
\def\PrintIfCat{{\tt\string\ifcat}}
\def\IndexIfX{\Index{ifx@\string\PrintIfX|PRIMITIVE}}
\def\PrintIfX{{\tt\string\ifx}}
\def\IndexIfOdd{\Index{ifodd@\string\PrintIfOdd|PRIMITIVE}}
\def\PrintIfOdd{{\tt\string\ifodd}}
\def\IndexIfHbox{\Index{ifhbox@\string\PrintIfHbox|PRIMITIVE}}
\def\PrintIfHbox{{\tt\string\ifhbox}}
\def\IndexIfVbox{\Index{ifvbox@\string\PrintIfVbox|PRIMITIVE}}
\def\PrintIfVbox{{\tt\string\ifvbox}}
\def\IndexIfVoid{\Index{ifvoid@\string\PrintIfVoid|PRIMITIVE}}
\def\PrintIfVoid{{\tt\string\ifvoid}}
\def\IndexIfNum{\Index{ifnum@\string\PrintIfNum|PRIMITIVE}}
\def\PrintIfNum{{\tt\string\ifnum}}
\def\IndexIfDim{\Index{ifdim@\string\PrintIfDim|PRIMITIVE}}
\def\PrintIfDim{{\tt\string\ifdim}}
\def\IndexIfHmode{\Index{ifhmode@\string\PrintIfHmode|PRIMITIVE}}
\def\PrintIfHmode{{\tt\string\ifhmode}}
\def\IndexIfVmode{\Index{ifvmode@\string\PrintIfVmode|PRIMITIVE}}
\def\PrintIfVmode{{\tt\string\ifvmode}}
\def\IndexIfMmode{\Index{ifvmode@\string\PrintIfMmode|PRIMITIVE}}
\def\PrintIfMmode{{\tt\string\ifvmode}}
\def\IndexIfInner{\Index{ifinner@\string\PrintIfInner|PRIMITIVE}}
\def\PrintIfInner{{\tt\string\ifinner}}
\def\IndexIfEof{\Index{ifeof@\string\PrintIfEof|PRIMITIVE}}
\def\PrintIfEof{{\tt\string\ifeof}}%
\def\IndexIfTrue{\Index{iftrue@\string\PrintIfTrue|PRIMITIVE}}
\def\PrintIfTrue{{\tt\string\iftrue}}%
\def\IndexIfFalse{\Index{iffalse@\string\PrintIfFalse|PRIMITIVE}}
\def\PrintIfFalse{{\tt\string\iffalse}}%
\def\IndexRepeat{\Index{repeat@\string\PrintRepeat}}
\def\PrintRepeat{{\tt\string\repeat}}%
\xdef\@IndexSuffixMod{}%
\def\IndexPSet #1{%
\CSToString{\@IndexPSetResult}{#1}%
\xdef\@IndexSuffixMod{|IndexP\@IndexPSetResult}%
\def\IndexPit #1{{\it #1}}
\def\IndexPbf #1{{\bf #1}}
\catcode`\@ = 12
\NameDef{@InputD-ts-wind.tip}{}
\def\WriteCounterOutImmediately #1#2{%
\OpenGenericOStream{#1}%
\immediate\write\GenericOStream
{\PrintCounter{#2}}%
\CloseGenericOStream
\NameDef{@InputD-ts-writc.tip}{}
\catcode`\@ = 11
\newdimen\@VtboxDim
\newbox\@VtboxBox
\def\Vtbox #1#2{%
\@VtboxDim = \ht#1%
\advance\@VtboxDim by \dp#1%
\setbox\@VtboxBox = \vbox{\unvcopy #1}%
\advance\@VtboxDim by -\ht\@VtboxBox
\advance\@VtboxDim by -\dp\@VtboxBox
#2\setbox #1 = \vtop spread \@VtboxDim {\unvbox #1}%
\catcode`\@ = 12
\NameDef{@InputD-vtbox.tip}{}
\def\WritingParShape{%
\wlog{\string\WritingParShape: begin}%
\wlog{}%
\wlog{\string\pretolerance: \the\pretolerance}%
\wlog{\string\tolerance: \the\tolerance}%
\wlog{\string\prevgraf: \the\prevgraf}%
\wlog{}%
\wlog{\string\parskip: \the\parskip}%
\wlog{\string\baselineskip: \the\baselineskip}%
\wlog{\string\lineskip: \the\lineskip}%
\wlog{\string\lineskiplimit: \the\lineskiplimit}%
\wlog{}%
\wlog{\string\parindent: \the\parindent}%
\wlog{\string\hsize: \the\hsize}%
\wlog{\string\leftskip: \the\leftskip}%
\wlog{\string\rightskip: \the\rightskip}%
\wlog{\string\parfillskip: \the\parfillskip}%
\wlog{\string\spaceskip: \the\spaceskip}%
\wlog{\string\xspaceskip: \the\xspaceskip}%
\wlog{}%
\wlog{\string\hyphenpenalty: \the\hyphenpenalty}%
\wlog{\string\exhyphenpenalty: \the\exhyphenpenalty}%
\wlog{\string\lefthyphenmin: \the\lefthyphenmin}%
\wlog{\string\righthyphenmin: \the\righthyphenmin}%
\wlog{\string\lefthyphenmin: \the\lefthyphenmin}%
\wlog{}%
\wlog{\string\adjdemerits: \the\adjdemerits}%
\wlog{\string\doublehyphendemerits: \the\doublehyphendemerits}%
\wlog{\string\finalhyphendemerits: \the\finalhyphendemerits}%
\wlog{\string\linepenalty: \the\linepenalty}%
\wlog{\string\sfcode\string\`.: \the\sfcode`\.}%
\wlog{\string\hyphenchar: \the\hyphenchar\tenrm}%
\wlog{}%
\wlog{\string\binoppenalty: \the\binoppenalty}%
\wlog{\string\relpenalty: \the\relpenalty}%
\wlog{}%
\wlog{\string\everypar: \the\everypar}%
\wlog{\string\WritingParShape: end}%
\NameDef{@InputD-wl-parcp.tip}{}
\catcode`\@ = 11
\newwrite\@VerbArgStream
\def\WriteVerbatimArgument #1#2{%
\immediate\openout\@VerbArgStream = #1
\def\@AfterWriteVerbatimArgument{#2}%
\begingroup
\MkOthersNoCB
\@WriteVerbatimArgument
\def\@WriteVerbatimArgument #1{%
\immediate\write\@VerbArgStream{#1}%
\immediate\closeout\@VerbArgStream
\endgroup
\@AfterWriteVerbatimArgument
\catcode`\@ = 12
\NameDef{@InputD-wrverbar.tip}{}
\catcode`\@ = 11
\newcount\X@ParShapeCountA
\newcount\X@ParShapeCountB
\newcount\X@ParShapeCountC
\newdimen\X@ParShapeDimenA
\newdimen\X@ParShapeDimenB
\def\XParShape{%
\def\X@ParShapeCollect{ }%
\X@ParShapeCountC = 0
\afterassignment\X@ParShapeB
\X@ParShapeCountA
\def\X@ParShapeB{%
\ifnum\X@ParShapeCountA = 0
\let\@XParShapeNext = \X@ParShapeD
\else
\advance\X@ParShapeCountA by -1
\let\@XParShapeNext = \X@ParShapeC
\fi
\@XParShapeNext
\def\X@ParShapeD{%
\parshape = \X@ParShapeCountC\X@ParShapeCollect
\def\X@ParShapeC #1 #2 #3 #4 #5 {%
\message{\string\X@ParShapeC: #1, #2, #3, #4, #5}%
\X@ParShapeDimenA = #2%
\X@ParShapeDimenB = #4%
\DoLoop{\X@ParShapeCountB}{1}{1}{#1}%
{%
\edef\X@ParShapeCollect{%
\space
\X@ParShapeCollect
\the\X@ParShapeDimenA
\space
\the\X@ParShapeDimenB
\space
}%
\advance\X@ParShapeCountC by 1
\advance\X@ParShapeDimenA by #3\relax
\advance\X@ParShapeDimenB by #5\relax
}%
\X@ParShapeB
\catcode`\@ = 12
\NameDef{@InputD-x-parsh.tip}{}
\newif\ifInputDVerbose
\InputDVerbosefalse
\catcode`\@ = 11
\newif\if@InputDList
\@InputDListfalse
\def\@InputDPrefix{@InputD-}
\NameDef{\@InputDPrefix namedef.tip}{}
\def\InputD #1{%
\if\NameDefinedConditional{\@InputDPrefix #1}%
\ifInputDVerbose
\wlog{\string\InputD: file "#1" was read-in before.}%
\fi
\else
\NameDef{\@InputDPrefix #1}{}%
\input #1
\if@InputDList
\immediate\write\@InputDStream{#1}%
\fi
\fi
\catcode`\@ = 12
\dump